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/12/18 07:52:22 UTC

[isis] branch master updated (5fcec11 -> cbf1f96)

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 5fcec11  ISIS-2226: fixes dependend args not cleared when using autoComplete
     new 4a4bb5f  ISIS-2062: updates scripts to generate docs
     new 18251f3  ISIS-2062: examples.sh now rm -rf their target first
     new 58e1b8c  ISIS-2062: also delete destination dir for generated config .adocs
     new 0936ef6  ISIS-2062: renames adoc-gen.sh to gen-adoc.sh
     new 825bc36  ISIS-2062: commits the copied over example files.
     new 0a1ca4b  ISIS-2062: factors out _adoc-antora.sh
     new 57acef7  ISIS-2062: improves build-site.sh script
     new 7e9e496  ISIS-2062: further improvements on scripts
     new ef3959b  ISIS-2062: more messing about with scripts
     new a97dc6d  ISIS-2062: more messing about with scripts
     new ae6c776  ISIS-2062: more messing about with scripts
     new e91e7d7  ISIS-2062: more messing about with scripts
     new 25ca1e8  ISIS-2062: more messing about with scripts
     new b8d7028  ISIS-2062: more messing about with scripts
     new b9c692d  ISIS-2062: more messing about with scripts
     new 8427a43  ISIS-2062: renames persistence-jdo to pjdo
     new e11c242  ISIS-2062: reconciles master 'site.yml' with individual site-xxx.yml
     new e86bbb2  ISIS-2062: runs dos2unix against all generated config .adoc files
     new a3819c8  ISIS-2072: updates site-core.yml, fix url ref
     new 63c50ab  ISIS-2072: updates site-core.yml, fix url ref
     new 151096f  ISIS-2072: experiment, site-core.yml in root
     new db7ed9a  ISIS-2062: more hacking
     new 16c8f27  ISIS-2062: moves site-xxx.yml to root directory
     new adfa1d8  ISIS-2062: reviewing docs
     new cbf1f96  ISIS-2062: docs for extensions

The 25 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:
 .../modules/ROOT/partials/component-nav.adoc       |   7 +-
 .../refguide/modules/ROOT/pages/about.adoc         |   1 +
 .../security/modules/ROOT/pages/about.adoc         |   2 +-
 .../domain-services-api-for-applications.adoc      |   2 +-
 .../modules/ROOT/partials/component-nav.adoc       |   6 -
 .../security/modules/ROOT/partials/module-nav.adoc |   2 +-
 .../modules/ROOT/partials/component-nav.adoc       |   4 +-
 .../components/toc/modules/ROOT/pages/about.adoc   |  45 ++--
 .../toc/modules/ROOT/pages/downloads/how-to.adoc   |   2 +-
 .../ROOT/pages/landing-page}/_attributes.adoc      |   0
 .../ROOT/pages/{ => landing-page}/components.adoc  |   2 +-
 .../extension-catalog.adoc}                        |  12 +-
 .../ROOT/pages/{ => landing-page}/guides.adoc      |   2 +-
 .../ROOT/pages/{ => landing-page}/internal.adoc    |   0
 .../ROOT/pages/{ => landing-page}/quick-start.adoc |  14 +-
 .../modules/ROOT/pages/landing-page/releases.adoc  |  37 +++
 .../ROOT/pages/{ => landing-page}/support.adoc     |   1 -
 .../ROOT/pages/more-thanks/more-thanks.adoc        |   2 +-
 .../what-is-apache-isis/common-use-cases.adoc      |   2 +-
 .../what-is-apache-isis/screencasts-older.adoc     |   4 +-
 .../pages/what-is-apache-isis/screencasts.adoc     |   7 +-
 .../toc/modules/ROOT/partials/module-nav.adoc      |   6 +-
 .../modules/comguide/pages/verifying-releases.adoc |   2 +-
 .../pages/hints-and-tips/datanucleus-enhancer.adoc |   4 +-
 .../pages/hints-and-tips/enabling-logging.adoc     |   2 +-
 .../how-run-fixtures-on-app-startup.adoc           |   2 +-
 .../toc/modules/devguide/pages/ide/eclipse.adoc    |   4 +-
 .../userguide/modules/ROOT/pages/about.adoc        |   2 +-
 .../deployment/externalized-configuration.adoc     |   2 +-
 .../modules/btb/pages/deployment/neo4j.adoc        |   4 +-
 .../replacing-default-service-implementations.adoc |  30 +--
 .../userguide/modules/btb/pages/i18n.adoc          |   2 +-
 .../userguide/modules/fun/pages/about.adoc         |   2 +-
 .../framework-provided.adoc                        |   1 -
 .../core-concepts/philosophy/how-eases-ddd.adoc    |   2 +-
 .../pages/programming-model/domain-entities.adoc   |   2 +-
 .../domain-services/scoped-services.adoc           |   3 +-
 .../fun/pages/programming-model/properties.adoc    |   2 +-
 antora/playbooks/site-other.yml                    |  82 ------
 antora/supplemental-ui/css/site-custom.css         |  16 ++
 antora/supplemental-ui/index.html                  |  18 +-
 .../src/main/doc/modules/applib-ant/examples.sh    |  12 +-
 .../doc/modules/applib-ant/examples/.gitignore     |   2 -
 .../applib-ant/examples}/annotation/Action.java    |   0
 .../examples}/annotation/ActionLayout.java         |   0
 .../applib-ant/examples}/annotation/Auditing.java  |   0
 .../examples}/annotation/BookmarkPolicy.java       |   0
 .../applib-ant/examples}/annotation/Bounding.java  |   0
 .../examples}/annotation/Collection.java           |   0
 .../examples}/annotation/CollectionLayout.java     |   0
 .../examples}/annotation/CommandExecuteIn.java     |   0
 .../examples}/annotation/CommandPersistence.java   |   0
 .../examples}/annotation/CommandReification.java   |   0
 .../applib-ant/examples}/annotation/Constants.java |   0
 .../examples}/annotation/Contributed.java          |   0
 .../applib-ant/examples}/annotation/Defaulted.java |   0
 .../examples}/annotation/DomainObject.java         |   0
 .../examples}/annotation/DomainObjectLayout.java   |   0
 .../examples}/annotation/DomainService.java        |   0
 .../examples}/annotation/DomainServiceLayout.java  |   0
 .../applib-ant/examples}/annotation/Editing.java   |   0
 .../examples}/annotation/EqualByContent.java       |   0
 .../applib-ant/examples}/annotation/Facets.java    |   0
 .../applib-ant/examples}/annotation/HomePage.java  |   0
 .../examples}/annotation/LabelPosition.java        |   0
 .../examples}/annotation/MemberOrder.java          |   0
 .../examples}/annotation/MementoSerialization.java |   0
 .../applib-ant/examples}/annotation/MinLength.java |   0
 .../applib-ant/examples}/annotation/Mixin.java     |   0
 .../applib-ant/examples}/annotation/Module.java    |   0
 .../applib-ant/examples}/annotation/Nature.java    |   0
 .../examples}/annotation/NatureOfService.java      |   0
 .../applib-ant/examples}/annotation/Navigable.java |   0
 .../examples}/annotation/Optionality.java          |   0
 .../examples}/annotation/OrderPrecedence.java      |   4 +-
 .../applib-ant/examples}/annotation/Parameter.java |   0
 .../examples}/annotation/ParameterLayout.java      |   0
 .../examples}/annotation/Programmatic.java         |   0
 .../examples}/annotation/Projecting.java           |   0
 .../examples}/annotation/PromptStyle.java          |   0
 .../applib-ant/examples}/annotation/Property.java  |   0
 .../examples}/annotation/PropertyLayout.java       |   0
 .../examples}/annotation/Publishing.java           |   0
 .../examples}/annotation/PublishingChangeKind.java |   0
 .../applib-ant/examples}/annotation/Redirect.java  |   0
 .../applib-ant/examples}/annotation/RenderDay.java |   0
 .../examples}/annotation/Repainting.java           |   0
 .../examples}/annotation/RestrictTo.java           |   0
 .../examples}/annotation/SemanticsOf.java          |   0
 .../applib-ant/examples}/annotation/Title.java     |   0
 .../applib-ant/examples}/annotation/Value.java     |   0
 .../applib-ant/examples}/annotation/ViewModel.java |   0
 .../examples}/annotation/ViewModelLayout.java      |   0
 .../applib-ant/examples}/annotation/Where.java     |   0
 .../examples}/annotation/package-info.java         |   0
 .../modules/applib-ant/pages/DomainService.adoc    |   4 -
 .../applib-ant/pages/DomainServiceLayout.adoc      |   5 -
 .../pages/DomainServiceLayout/menuBar.adoc         |   4 +-
 .../pages/DomainServiceLayout/named.adoc           |   7 -
 .../src/main/doc/modules/applib-cm/examples.sh     |  48 +---
 .../main/doc/modules/applib-cm/examples/.gitignore |   2 -
 .../modules/applib-cm/examples}/clock/Clock.java   |   0
 .../applib-cm/examples}/clock/package-info.java    |   0
 .../examples}/domain/DomainObjectList.java         |   0
 .../events/ActionArgumentUsabilityEvent.java       |   0
 .../events/ActionArgumentVisibilityEvent.java      |   0
 .../events/domain/AbstractDomainEvent.java         |   0
 .../examples}/events/domain/ActionDomainEvent.java |   0
 .../events/domain/CollectionDomainEvent.java       |   0
 .../examples}/events/domain/EventObjectBase.java   |   0
 .../events/domain/PropertyDomainEvent.java         |   0
 .../events/lifecycle/AbstractLifecycleEvent.java   |   0
 .../events/lifecycle/ObjectCreatedEvent.java       |   0
 .../events/lifecycle/ObjectLoadedEvent.java        |   0
 .../events/lifecycle/ObjectPersistedEvent.java     |   0
 .../events/lifecycle/ObjectPersistingEvent.java    |   0
 .../events/lifecycle/ObjectRemovingEvent.java      |   0
 .../events/lifecycle/ObjectUpdatedEvent.java       |   0
 .../events/lifecycle/ObjectUpdatingEvent.java      |   0
 .../examples}/events/ui/AbstractUiEvent.java       |   0
 .../examples}/events/ui/CssClassUiEvent.java       |   0
 .../applib-cm/examples}/events/ui/IconUiEvent.java |   0
 .../examples}/events/ui/LayoutUiEvent.java         |   0
 .../examples}/events/ui/TitleUiEvent.java          |   0
 .../layout/component/ActionLayoutData.java         |   0
 .../layout/component/ActionLayoutDataOwner.java    |   0
 .../layout/component/CollectionLayoutData.java     |   0
 .../component/CollectionLayoutDataOwner.java       |   0
 .../layout/component/DomainObjectLayoutData.java   |   0
 .../component/DomainObjectLayoutDataOwner.java     |   0
 .../examples}/layout/component/FieldSet.java       |   0
 .../examples}/layout/component/FieldSetOwner.java  |   0
 .../examples}/layout/component/HasBookmarking.java |   0
 .../examples}/layout/component/HasCssClass.java    |   0
 .../examples}/layout/component/HasCssClassFa.java  |   0
 .../examples}/layout/component/HasDescribedAs.java |   0
 .../examples}/layout/component/HasHidden.java      |   0
 .../examples}/layout/component/HasNamed.java       |   0
 .../examples}/layout/component/MemberRegion.java   |   0
 .../layout/component/MemberRegionOwner.java        |   0
 .../examples}/layout/component/Owned.java          |   0
 .../examples}/layout/component/Owner.java          |   0
 .../layout/component/PropertyLayoutData.java       |   0
 .../layout/component/ServiceActionLayoutData.java  |   0
 .../component/ServiceActionLayoutDataOwner.java    |   0
 .../examples}/layout/component/package-info.java   |   0
 .../applib-cm/examples}/layout/grid/Grid.java      |   0
 .../examples}/layout/grid/GridAbstract.java        |   0
 .../layout/grid/bootstrap3/BS3ClearFix.java        |   0
 .../layout/grid/bootstrap3/BS3ClearFixHidden.java  |   0
 .../layout/grid/bootstrap3/BS3ClearFixVisible.java |   0
 .../examples}/layout/grid/bootstrap3/BS3Col.java   |   0
 .../layout/grid/bootstrap3/BS3Element.java         |   0
 .../layout/grid/bootstrap3/BS3ElementAbstract.java |   0
 .../examples}/layout/grid/bootstrap3/BS3Grid.java  |   0
 .../examples}/layout/grid/bootstrap3/BS3Row.java   |   0
 .../layout/grid/bootstrap3/BS3RowContent.java      |   0
 .../layout/grid/bootstrap3/BS3RowContentOwner.java |   0
 .../layout/grid/bootstrap3/BS3RowOwner.java        |   0
 .../examples}/layout/grid/bootstrap3/BS3Tab.java   |   0
 .../layout/grid/bootstrap3/BS3TabGroup.java        |   0
 .../layout/grid/bootstrap3/BS3TabGroupOwner.java   |   0
 .../layout/grid/bootstrap3/BS3TabOwner.java        |   0
 .../examples}/layout/grid/bootstrap3/HasCssId.java |   0
 .../examples}/layout/grid/bootstrap3/Size.java     |   0
 .../examples}/layout/grid/bootstrap3/SizeSpan.java |   0
 .../layout/grid/bootstrap3/WithinGrid.java         |   0
 .../layout/grid/bootstrap3/package-info.java       |   0
 .../applib-cm/examples}/layout/links/Link.java     |   0
 .../examples}/layout/links/package-info.java       |   0
 .../applib-cm/examples}/layout/menubars/Menu.java  |   0
 .../examples}/layout/menubars/MenuBar.java         |   0
 .../examples}/layout/menubars/MenuBars.java        |   0
 .../layout/menubars/MenuBarsAbstract.java          |   0
 .../examples}/layout/menubars/MenuSection.java     |   0
 .../layout/menubars/bootstrap3/BS3Menu.java        |   0
 .../layout/menubars/bootstrap3/BS3MenuBar.java     |   0
 .../layout/menubars/bootstrap3/BS3MenuBars.java    |   0
 .../layout/menubars/bootstrap3/BS3MenuSection.java |   0
 .../layout/menubars/bootstrap3/package-info.java   |   0
 .../applib-cm/examples}/layout/package-info.java   |   0
 .../applib-cm/examples}/mixins/MixinConstants.java |   0
 .../applib-cm/examples}/mixins/dto/Dto.java        |   0
 .../examples}/mixins/dto/DtoMappingHelper.java     |   0
 .../examples}/mixins/dto/Dto_downloadXml.java      |   0
 .../examples}/mixins/dto/Dto_downloadXsd.java      |   0
 .../examples}/mixins/dto/package-info.java         |   0
 .../mixins/layout/Object_downloadLayoutXml.java    |   0
 .../mixins/layout/Object_openRestApi.java          |   0
 .../mixins/layout/Object_rebuildMetamodel.java     |   0
 .../metamodel/Object_downloadMetaModelXml.java     |   0
 .../mixins/metamodel/Object_objectIdentifier.java  |   0
 .../mixins/metamodel/Object_objectType.java        |   0
 .../examples}/mixins/timestamp/HoldsUpdatedAt.java |   0
 .../examples}/mixins/timestamp/HoldsUpdatedBy.java |   0
 .../examples}/mixins/timestamp/Timestampable.java  |   0
 .../examples}/mixins/timestamp/package-info.java   |   0
 .../applib-cm/examples}/security/RoleMemento.java  |   0
 .../applib-cm/examples}/security/UserMemento.java  |   0
 .../applib-cm/examples}/security/package-info.java |   0
 .../examples}/spec/AbstractSpecification.java      |   0
 .../examples}/spec/AbstractSpecification2.java     |   0
 .../applib-cm/examples}/spec/Specification.java    |   0
 .../applib-cm/examples}/spec/Specification2.java   |   0
 .../applib-cm/examples}/spec/SpecificationAnd.java |   0
 .../applib-cm/examples}/spec/SpecificationNot.java |   0
 .../applib-cm/examples}/spec/SpecificationOr.java  |   0
 .../applib-cm/examples}/spec/package-info.java     |   0
 .../applib-cm/examples}/tree/LazyTreeNode.java     |   0
 .../applib-cm/examples}/tree/TreeAdapter.java      |   0
 .../modules/applib-cm/examples}/tree/TreeNode.java |   0
 .../tree/TreeNode_iteratorBreadthFirst.java        |   0
 .../tree/TreeNode_iteratorDepthFirst.java          |   0
 .../tree/TreeNode_iteratorHierarchyUp.java         |   0
 .../modules/applib-cm/examples}/tree/TreePath.java |   0
 .../applib-cm/examples}/tree/TreePath_Default.java |   0
 .../applib-cm/examples}/tree/TreeState.java        |   0
 .../examples}/tree/TreeState_Default.java          |   0
 .../modules/applib-cm/examples}/util/Enums.java    |   0
 .../modules/applib-cm/examples}/util/Equality.java |   0
 .../modules/applib-cm/examples}/util/Hashing.java  |   0
 .../applib-cm/examples}/util/JaxbAdapters.java     |   0
 .../modules/applib-cm/examples}/util/JaxbUtil.java |   0
 .../examples}/util/ObjectContract_Empty.java       |   0
 .../examples}/util/ObjectContract_Impl.java        |   0
 .../examples}/util/ObjectContract_Parser.java      |   0
 .../applib-cm/examples}/util/ObjectContracts.java  |   0
 .../applib-cm/examples}/util/ReasonBuffer.java     |   0
 .../applib-cm/examples}/util/ReasonBuffer2.java    |   0
 .../modules/applib-cm/examples}/util/Reasons.java  |   0
 .../applib-cm/examples}/util/TitleBuffer.java      |   0
 .../examples}/util/TitleBufferException.java       |   0
 .../modules/applib-cm/examples}/util/ToString.java |   0
 .../applib-cm/examples}/util/package-info.java     |   0
 .../examples}/util/schema/ChangesDtoUtils.java     |   0
 .../examples}/util/schema/CommandDtoUtils.java     |   0
 .../examples}/util/schema/CommonDtoUtils.java      |   0
 .../examples}/util/schema/InteractionDtoUtils.java |   0
 .../util/schema/MemberExecutionDtoUtils.java       |   0
 .../modules/applib-cm/examples}/value/Blob.java    |   0
 .../applib-cm/examples}/value/BlobClobFactory.java |   0
 .../modules/applib-cm/examples}/value/Clob.java    |   0
 .../modules/applib-cm/examples}/value/Color.java   |   0
 .../modules/applib-cm/examples}/value/Image.java   |   0
 .../examples}/value/LocalResourcePath.java         |   0
 .../applib-cm/examples}/value/Magnitude.java       |   0
 .../modules/applib-cm/examples}/value/Markup.java  |   0
 .../modules/applib-cm/examples}/value/Money.java   |   0
 .../examples}/value/NamedWithMimeType.java         |   0
 .../applib-cm/examples}/value/Password.java        |   0
 .../applib-cm/examples}/value/Percentage.java      |   0
 .../applib-cm/examples}/value/package-info.java    |   0
 .../pages/classes/AppManifest-bootstrapping.adoc   |   2 +-
 .../pages/classes/super/AbstractSubscriber.adoc    |   2 +-
 .../src/main/doc/modules/applib-svc/examples.sh    |  12 +-
 .../doc/modules/applib-svc/examples/.gitignore     |   2 -
 .../applib-svc/examples}/services/HasUniqueId.java |   0
 .../applib-svc/examples}/services/HasUsername.java |   0
 .../RepresentsInteractionMemberExecution.java      |   0
 .../examples}/services/WithTransactionScope.java   |   0
 .../services/acceptheader/AcceptHeaderService.java |   0
 .../appfeat/ApplicationFeatureRepository.java      |   0
 .../services/appfeat/ApplicationMemberType.java    |   0
 .../examples}/services/appfeat/package-info.java   |   0
 .../services/audit/AuditEntryPropertyIdType.java   |   0
 .../audit/AuditEntryPropertyValueType.java         |   0
 .../examples}/services/audit/AuditerService.java   |   0
 .../services/audit/AuditerServiceLogging.java      |   0
 .../examples}/services/audit/package-info.java     |   0
 .../background/BackgroundCommandService.java       |   0
 .../services/background/package-info.java          |   0
 .../examples}/services/bookmark/Bookmark.java      |   0
 .../services/bookmark/BookmarkHolder.java          |   0
 .../services/bookmark/BookmarkHolder_lookup.java   |   0
 .../services/bookmark/BookmarkHolder_object.java   |   0
 .../services/bookmark/BookmarkService.java         |   0
 .../examples}/services/bookmark/package-info.java  |   0
 .../services/bookmarkui/BookmarkUiService.java     |   0
 .../examples}/services/clock/ClockService.java     |   0
 .../examples}/services/clock/package-info.java     |   0
 .../examples}/services/command/Command.java        |   0
 .../examples}/services/command/CommandContext.java |   7 +-
 .../examples}/services/command/CommandDefault.java |   0
 .../services/command/CommandDtoProcessor.java      |   0
 .../CommandDtoProcessorForActionAbstract.java      |   0
 .../CommandDtoProcessorForPropertyAbstract.java    |   0
 .../services/command/CommandExecutorService.java   |   0
 .../examples}/services/command/CommandWithDto.java |   0
 .../examples}/services/command/package-info.java   |   0
 .../services/command/spi/CommandService.java       |   8 +-
 .../services/confview/ConfigurationMenu.java       |   0
 .../services/confview/ConfigurationProperty.java   |   0
 .../confview/ConfigurationProperty.layout.xml      |   0
 .../services/confview/ConfigurationProperty.png    | Bin
 .../confview/ConfigurationViewService.java         |   0
 .../examples}/services/confview/package-info.java  |   0
 .../services/conmap/ContentMappingService.java     |   0
 .../ContentMappingServiceForCommandDto.java        |   0
 .../ContentMappingServiceForCommandsDto.java       |   0
 .../command/spi/CommandDtoProcessorService.java    |   0
 .../examples}/services/conmap/package-info.java    |   0
 .../examples}/services/email/EmailService.java     |   0
 .../examples}/services/email/package-info.java     |   0
 .../examples}/services/error/ErrorDetails.java     |   0
 .../services/error/ErrorReportingService.java      |   0
 .../examples}/services/error/Ticket.java           |   0
 .../examples}/services/error/package-info.java     |   0
 .../services/eventbus/EventBusService.java         |   0
 .../examples}/services/eventbus/package-info.java  |   0
 .../services/exceprecog/ExceptionRecognizer.java   |   0
 .../exceprecog/ExceptionRecognizerAbstract.java    |   0
 .../exceprecog/ExceptionRecognizerComposite.java   |   0
 .../exceprecog/ExceptionRecognizerForType.java     |   0
 .../services/exceprecog/TranslatableException.java |   0
 .../services/exceprecog/package-info.java          |   0
 .../examples}/services/factory/FactoryService.java |   0
 .../examples}/services/factory/package-info.java   |   0
 .../examples}/services/grid/GridLoaderService.java |   0
 .../examples}/services/grid/GridService.java       |   0
 .../examples}/services/grid/GridSystemService.java |   0
 .../examples}/services/grid/package-info.java      |   0
 .../examples}/services/health/Health.java          |   0
 .../services/health/HealthCheckService.java        |   0
 .../examples}/services/hint/HintStore.java         |   0
 .../examples}/services/hint/package-info.java      |   0
 .../examples}/services/i18n/LocaleProvider.java    |   0
 .../services/i18n/TranslatableString.java          |   0
 .../services/i18n/TranslationService.java          |   0
 .../services/i18n/TranslationsResolver.java        |   0
 .../examples}/services/i18n/package-info.java      |   0
 .../examples}/services/iactn/Interaction.java      |   0
 .../services/iactn/InteractionContext.java         |  13 +-
 .../examples}/services/iactn/package-info.java     |   0
 .../examples}/services/inject/ServiceInjector.java |   0
 .../jaxb/CatalogingSchemaOutputResolver.java       |   0
 .../examples}/services/jaxb/JaxbService.java       |   0
 .../services/jaxb/JaxbServiceDefault.java          |   0
 .../services/jaxb/StreamResultWithWriter.java      |   0
 .../examples}/services/jaxb/package-info.java      |   0
 .../examples}/services/layout/LayoutService.java   |   0
 .../services/layout/LayoutServiceMenu.java         |   0
 .../examples}/services/layout/package-info.java    |   0
 .../services/linking/DeepLinkService.java          |   0
 .../examples}/services/linking/package-info.java   |   0
 .../services/menu/MenuBarsLoaderService.java       |   0
 .../examples}/services/menu/MenuBarsService.java   |   0
 .../examples}/services/message/MessageService.java |   0
 .../examples}/services/message/package-info.java   |   0
 .../examples}/services/metamodel/DomainMember.java |   0
 .../examples}/services/metamodel/DomainModel.java  |   0
 .../services/metamodel/MetaModelService.java       |   0
 .../services/metamodel/MetaModelServicesMenu.java  |   0
 .../examples}/services/metamodel/package-info.java |   0
 .../examples}/services/metrics/MetricsService.java |   0
 .../examples}/services/metrics/package-info.java   |   0
 .../examples}/services/package-info.java           |   0
 .../services/publish/PublishedObjects.java         |   0
 .../services/publish/PublisherService.java         |   0
 .../services/publish/PublisherServiceLogging.java  |   0
 .../examples}/services/publish/package-info.java   |   0
 .../queryresultscache/QueryResultCacheControl.java |   0
 .../queryresultscache/QueryResultsCache.java       |   0
 .../QueryResultsCacheDefault.java                  |   0
 .../services/queryresultscache/package-info.java   |   0
 .../services/registry/ServiceRegistry.java         |   0
 .../examples}/services/registry/package-info.java  |   0
 .../services/repository/RepositoryService.java     |   0
 .../services/repository/package-info.java          |   0
 .../examples}/services/routing/RoutingService.java |   0
 .../examples}/services/routing/package-info.java   |   0
 .../examples}/services/scratchpad/Scratchpad.java  |   0
 .../services/scratchpad/package-info.java          |   0
 .../services/session/SessionLoggingService.java    |   0
 .../examples}/services/session/package-info.java   |   0
 .../sessmgmt/SessionManagementService.java         |   0
 .../examples}/services/sessmgmt/package-info.java  |   0
 .../examples}/services/sudo/SudoService.java       |   0
 .../examples}/services/sudo/package-info.java      |   0
 .../examples}/services/swagger/SwaggerService.java |   0
 .../examples}/services/swagger/package-info.java   |   0
 .../services/tablecol/TableColumnOrderService.java |   0
 .../examples}/services/title/TitleService.java     |   0
 .../examples}/services/title/package-info.java     |   0
 .../services/urlencoding/UrlEncodingService.java   |   0
 ...rlEncodingServiceUsingBaseEncodingAbstract.java |   0
 .../UrlEncodingServiceWithCompression.java         |   0
 .../services/urlencoding/package-info.java         |   0
 .../examples}/services/user/UserService.java       |   0
 .../examples}/services/user/package-info.java      |   0
 .../services/userprof/UserProfileService.java      |   0
 .../examples}/services/userprof/package-info.java  |   0
 .../services/userreg/EmailNotificationService.java |   0
 .../examples}/services/userreg/UserDetails.java    |   0
 .../services/userreg/UserRegistrationService.java  |   0
 .../userreg/events/EmailEventAbstract.java         |   0
 .../userreg/events/EmailRegistrationEvent.java     |   0
 .../userreg/events/PasswordResetEvent.java         |   0
 .../examples}/services/userreg/package-info.java   |   0
 .../examples}/services/wrapper/AsyncWrap.java      |   0
 .../services/wrapper/DisabledException.java        |   0
 .../services/wrapper/HiddenException.java          |   0
 .../services/wrapper/InteractionException.java     |   0
 .../services/wrapper/InvalidException.java         |   0
 .../examples}/services/wrapper/WrapperFactory.java |   0
 .../examples}/services/wrapper/WrappingObject.java |   0
 .../services/wrapper/events/AccessEvent.java       |   0
 .../wrapper/events/ActionArgumentEvent.java        |   0
 .../wrapper/events/ActionInvocationEvent.java      |   0
 .../wrapper/events/ActionUsabilityEvent.java       |   0
 .../wrapper/events/ActionVisibilityEvent.java      |   0
 .../wrapper/events/CollectionAccessEvent.java      |   0
 .../wrapper/events/CollectionAddToEvent.java       |   0
 .../wrapper/events/CollectionMethodEvent.java      |   0
 .../wrapper/events/CollectionRemoveFromEvent.java  |   0
 .../wrapper/events/CollectionUsabilityEvent.java   |   0
 .../wrapper/events/CollectionVisibilityEvent.java  |   0
 .../services/wrapper/events/InteractionEvent.java  |   0
 .../services/wrapper/events/ObjectTitleEvent.java  |   0
 .../wrapper/events/ObjectValidityEvent.java        |   0
 .../wrapper/events/ObjectVisibilityEvent.java      |   0
 .../services/wrapper/events/ParseValueEvent.java   |   0
 .../wrapper/events/PropertyAccessEvent.java        |   0
 .../wrapper/events/PropertyModifyEvent.java        |   0
 .../wrapper/events/PropertyUsabilityEvent.java     |   0
 .../wrapper/events/PropertyVisibilityEvent.java    |   0
 .../wrapper/events/ProposedHolderEvent.java        |   0
 .../services/wrapper/events/UsabilityEvent.java    |   0
 .../services/wrapper/events/ValidityEvent.java     |   0
 .../services/wrapper/events/VisibilityEvent.java   |   0
 .../services/wrapper/events/package-info.java      |   0
 .../wrapper/listeners/InteractionAdapter.java      |   0
 .../wrapper/listeners/InteractionListener.java     |   0
 .../examples}/services/wrapper/package-info.java   |   0
 .../examples}/services/xactn/Transaction.java      |   0
 .../examples}/services/xactn/TransactionId.java    |   0
 .../services/xactn/TransactionService.java         |   0
 .../examples}/services/xactn/TransactionState.java |   0
 .../examples}/services/xactn/package-info.java     |   0
 .../services/xmlsnapshot/XmlSnapshotService.java   |   0
 .../xmlsnapshot/XmlSnapshotServiceAbstract.java    |   0
 .../services/xmlsnapshot/package-info.java         |   0
 .../main/doc/modules/applib-svc/pages/about.adoc   |  69 ++----
 .../applib-svc/pages/application-layer-api.adoc    |  15 +-
 .../ActionInvocationContext.adoc                   | 102 --------
 .../application-layer-api/BackgroundService.adoc   |  10 +-
 .../application-layer-api/CommandContext.adoc      |  42 ++--
 .../application-layer-api/InteractionContext.adoc  |   4 +-
 .../application-layer-api/MessageService.adoc      |   2 +-
 .../SessionManagementService.adoc                  |   2 +-
 .../applib-svc/pages/application-layer-spi.adoc    |   1 +
 .../applib-svc/pages/bootstrapping-spi.adoc        |   2 +-
 .../bootstrapping-spi/ClassDiscoveryService.adoc   |   2 +-
 .../modules/applib-svc/pages/core-domain-api.adoc  |   2 +-
 .../pages/core-domain-api/EventBusService.adoc     |   9 +-
 .../pages/core-domain-api/Scratchpad.adoc          |   2 +-
 .../modules/applib-svc/pages/integration-api.adoc  |   2 +-
 .../pages/integration-api/BookmarkService.adoc     |   2 +-
 .../pages/integration-api/JaxbService.adoc         |   2 +-
 .../pages/integration-api/MementoService.adoc      |   2 +-
 .../doc/modules/applib-svc/pages/metadata-api.adoc |   2 +-
 .../applib-svc/pages/persistence-layer-api.adoc    |   2 +-
 .../persistence-layer-api/QueryResultsCache.adoc   |   2 +-
 .../applib-svc/pages/persistence-layer-spi.adoc    |   2 +-
 .../applib-svc/pages/presentation-layer-api.adoc   |   2 +-
 .../AcceptHeaderService.adoc                       |  14 +-
 .../presentation-layer-api/GuiceBeanProvider.adoc  |   2 +-
 .../applib-svc/pages/presentation-layer-spi.adoc   |   2 +-
 .../ContentMappingService.adoc                     |   6 +-
 .../presentation-layer-spi/GridSystemService.adoc  |  14 +-
 .../pages/presentation-layer-spi/HintStore.adoc    |   2 +-
 .../presentation-layer-spi/RoutingService.adoc     |  10 +-
 .../TableColumnOrderService.adoc                   |   4 +-
 .../presentation-layer-spi/UrlEncodingService.adoc |   2 +-
 .../main/doc/modules/applib-svc/pages/testing.adoc |   2 +-
 .../FixtureScriptsSpecificationProvider.adoc       |   2 +-
 .../modules/applib-svc/partials/module-nav.adoc    |   2 -
 .../isis/applib/annotation/OrderPrecedence.java    |   4 +-
 .../applib/services/command/CommandContext.java    |   7 +-
 .../services/command/spi/CommandService.java       |   8 +-
 .../applib/services/iactn/InteractionContext.java  |  13 +-
 .../main/doc/modules/config/examples/.gitignore    |   1 -
 .../modules/config/examples/generated/Other.adoc   |  29 +++
 .../generated/isis.authentication.shiro.adoc       |   6 +
 .../config/examples/generated/isis.persistor.adoc  |   6 +
 .../generated/isis.persistor.datanucleus.adoc      |  20 ++
 .../generated/isis.persistor.datanucleus.impl.adoc | 225 +++++++++++++++++
 .../config/examples/generated/isis.reflector.adoc  |  15 ++
 .../examples/generated/isis.reflector.facet.adoc   | 149 +++++++++++
 .../generated/isis.reflector.validator.adoc        |  80 ++++++
 .../examples/generated/isis.service.email.adoc     |  59 +++++
 .../config/examples/generated/isis.services.adoc   |  60 +++++
 .../generated/isis.viewer.restfulobjects.adoc      |  56 +++++
 .../examples/generated/isis.viewer.wicket.adoc     | 276 +++++++++++++++++++++
 .../config/examples/generated/isis.viewers.adoc    |  34 +++
 .../config/pages/specifying-components.adoc        |   2 +-
 core/persistence/jdo/src/main/doc/antora.yml       |   2 +-
 .../jdo/src/main/doc/modules/ROOT/nav.adoc         |   5 +-
 .../disabling-persistence-by-reachability.adoc     |   2 +-
 .../ROOT/pages/configuring/persistence-xml.adoc    |   2 +-
 .../modules/ROOT/pages/configuring/properties.adoc |   4 +-
 .../main/doc/modules/ROOT/pages/db-schemas.adoc    |   2 +-
 .../pages/hints-and-tips/diagnosing-n-plus-1.adoc  |   2 +-
 .../typesafe-queries-and-fetchgroups.adoc          |   2 +-
 .../doc/modules/ROOT/partials/component-nav.adoc   |   2 +
 .../ROOT/{nav.adoc => partials/module-nav.adoc}    |   0
 .../runtime-services/pages/application-layer.adoc  |   2 +-
 .../runtime-services/pages/persistence-layer.adoc  |   2 +-
 .../PublishingServiceInternal.adoc                 |   2 +-
 .../runtime-services/pages/presentation-layer.adoc |   2 +-
 .../ContentNegotiationService.adoc                 |   4 +-
 .../presentation-layer/RepresentationService.adoc  |   2 +-
 .../services/IsisModuleRuntimeServices.java        |   3 +-
 .../CommandExecutorServiceDefault.java             |   2 +-
 .../pages/about/configuring-isis-to-use-shiro.adoc |   4 +-
 .../doc/modules/shiro/pages/about/ini-realm.adoc   |   2 +-
 .../pages/integ-test-support/bootstrapping.adoc    |   2 +-
 .../integ-test-support/maven-configuration.adoc    |   6 +-
 .../unit-test-support/maven-configuration.adoc     |   6 +-
 .../doc/modules/ROOT/pages/layout-resources.adoc   |   4 +-
 .../doc/modules/ROOT/pages/layout/file-based.adoc  |   2 +-
 .../doc/modules/spring/partials/module-nav.adoc    |   2 +-
 .../base/impl}/src/main/doc/antora.yml             |   0
 .../src/main/doc/modules/base}/_attributes.adoc    |   0
 .../base/impl/src/main/doc/modules/base}/nav.adoc  |   0
 .../main/doc/modules/base/pages}/_attributes.adoc  |   0
 .../src/main/doc/modules/base}/pages/about.adoc    |   2 +-
 .../doc/modules/base/partials}/_attributes.adoc    |   0
 .../main/doc/modules/base/partials/module-nav.adoc |   3 +
 .../h2console => lib/docx/impl}/pom.xml            |  20 +-
 .../docx/impl}/src/main/doc/antora.yml             |   0
 .../src/main/doc/modules/docx}/_attributes.adoc    |   0
 .../docx/impl/src/main/doc/modules/docx}/nav.adoc  |   0
 .../main/doc/modules/docx/pages}/_attributes.adoc  |   0
 .../src/main/doc/modules/docx}/pages/about.adoc    |   2 +-
 .../doc/modules/docx/partials}/_attributes.adoc    |   0
 .../main/doc/modules/docx/partials/module-nav.adoc |   3 +
 .../extensions/docx/dom/IsisModuleExtDocx.java}    |   7 +-
 .../excel/impl}/src/main/doc/antora.yml            |   0
 .../src/main/doc/modules/excel}/_attributes.adoc   |   0
 .../impl/src/main/doc/modules/excel}/nav.adoc      |   0
 .../main/doc/modules/excel}/pages/_attributes.adoc |   0
 .../src/main/doc/modules/excel}/pages/about.adoc   |   2 +-
 .../doc/modules/excel/partials}/_attributes.adoc   |   0
 .../doc/modules/excel/partials/module-nav.adoc     |   3 +
 .../{h2console => flywayjdo/impl}/pom.xml          |  22 +-
 .../flywayjdo/impl/src/main/doc/antora.yml         |   2 +
 .../main/doc/modules/flywayjdo}/_attributes.adoc   |   0
 .../impl/src/main/doc/modules/flywayjdo}/nav.adoc  |   0
 .../doc/modules/flywayjdo}/pages/_attributes.adoc  |   0
 .../main/doc/modules/flywayjdo}/pages/about.adoc   |   2 +-
 .../modules/flywayjdo/partials}/_attributes.adoc   |   0
 .../doc/modules/flywayjdo/partials/module-nav.adoc |   3 +
 .../flywayjdo/dom/IsisModuleExtFlywayJdo.java}     |   7 +-
 .../persistence/h2console/{ => impl}/pom.xml       |   2 +-
 .../impl}/src/main/doc/antora.yml                  |   0
 .../main/doc/modules/h2console}/_attributes.adoc   |   0
 .../src/main/doc/modules/h2console/nav.adoc        |   0
 .../doc/modules/h2console}/pages/_attributes.adoc  |   0
 .../main/doc/modules/h2console/pages/about.adoc    |   0
 .../modules/h2console/partials}/_attributes.adoc   |   0
 .../doc/modules/h2console/partials/module-nav.adoc |   3 +
 .../h2console/dom/IsisModuleExtH2Console.java      |   0
 .../h2console/dom/services/H2ManagerMenu.java      |   0
 .../dom/webmodule/WebModuleH2Console.java          |   0
 .../doc/modules/h2console/partials/module-nav.adoc |   3 -
 .../persistence/hsqldbmgr/{ => impl}/pom.xml       |   2 +-
 .../hsqldbmgr/{ => impl}/src/main/doc/antora.yml   |   0
 .../main/doc/modules/hsqldbmgr}/_attributes.adoc   |   0
 .../src/main/doc/modules/hsqldbmgr/nav.adoc        |   0
 .../doc/modules/hsqldbmgr}/pages/_attributes.adoc  |   0
 .../main/doc/modules/hsqldbmgr/pages/about.adoc    |   0
 .../modules/hsqldbmgr/partials}/_attributes.adoc   |   0
 .../doc/modules/hsqldbmgr/partials/module-nav.adoc |   3 +
 .../hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java      |   0
 .../hsqldbmgr/dom/services/HsqlDbManagerMenu.java  |   0
 .../doc/modules/hsqldbmgr/partials/module-nav.adoc |   3 -
 extensions/pom.xml                                 |  32 +--
 .../doc/modules/shiro-realm-ldap/pages/about.adoc  |   2 +-
 .../{lib => testing}/fakedata/fixture/.gitignore   |   0
 .../fakedata/fixture/logging-dn-enhance.properties |   0
 .../{lib => testing}/fakedata/fixture/pom.xml      |   0
 .../fixture/src/main/java/META-INF/persistence.xml |   0
 .../fixture/IsisModuleExtFakeDataFixtures.java     |   0
 .../fixture/demoapp/demomodule/dom/EnumOf3.java    |   0
 .../demomodule/dom/FakeDataDemoObjectWithAll.java  |   0
 .../demomodule/dom/FakeDataDemoObjectWithAll.png   | Bin
 .../dom/FakeDataDemoObjectWithAllMenu.java         |   0
 .../FakeDataDemoObjectWithAll_create3.java         |   0
 .../FakeDataDemoObjectWithAll_tearDown.java        |   0
 ...eDataDemoObjectWithAll_create_withFakeData.java |   0
 ...eDataDemoObjectWithAll_update_withFakeData.java |   0
 extensions/{lib => testing}/fakedata/impl/pom.xml  |   0
 .../testing/fakedata/impl}/src/main/doc/antora.yml |   0
 .../main/doc/modules/fakedata}/_attributes.adoc    |   0
 .../impl/src/main/doc/modules/fakedata}/nav.adoc   |   0
 .../doc/modules/fakedata}/pages/_attributes.adoc   |   0
 .../main/doc/modules/fakedata}/pages/about.adoc    |   2 +-
 .../modules/fakedata/partials}/_attributes.adoc    |   0
 .../doc/modules/fakedata/partials/module-nav.adoc  |   3 +
 .../fakedata/dom/IsisModuleExtFakeData.java        |   0
 .../dom/services/AbstractRandomValueGenerator.java |   0
 .../fakedata/dom/services/Addresses.java           |   0
 .../fakedata/dom/services/BigDecimals.java         |   0
 .../fakedata/dom/services/BigIntegers.java         |   0
 .../extensions/fakedata/dom/services/Books.java    |   0
 .../extensions/fakedata/dom/services/Booleans.java |   0
 .../extensions/fakedata/dom/services/Bytes.java    |   0
 .../extensions/fakedata/dom/services/Chars.java    |   0
 .../fakedata/dom/services/Collections.java         |   0
 .../extensions/fakedata/dom/services/Comms.java    |   0
 .../fakedata/dom/services/CreditCards.java         |   0
 .../extensions/fakedata/dom/services/Doubles.java  |   0
 .../extensions/fakedata/dom/services/Enums.java    |   0
 .../fakedata/dom/services/FakeDataService.java     |   0
 .../extensions/fakedata/dom/services/Floats.java   |   0
 .../extensions/fakedata/dom/services/Integers.java |   0
 .../fakedata/dom/services/IsisBlobs.java           |   0
 .../fakedata/dom/services/IsisClobs.java           |   0
 .../fakedata/dom/services/IsisMoneys.java          |   0
 .../fakedata/dom/services/IsisPasswords.java       |   0
 .../fakedata/dom/services/J8DateTimes.java         |   0
 .../fakedata/dom/services/J8LocalDates.java        |   0
 .../fakedata/dom/services/J8Periods.java           |   0
 .../fakedata/dom/services/JavaSqlDates.java        |   0
 .../fakedata/dom/services/JavaSqlTimestamps.java   |   0
 .../fakedata/dom/services/JavaUtilDates.java       |   0
 .../extensions/fakedata/dom/services/Longs.java    |   0
 .../extensions/fakedata/dom/services/Lorem.java    |   0
 .../extensions/fakedata/dom/services/Names.java    |   0
 .../extensions/fakedata/dom/services/Shorts.java   |   0
 .../extensions/fakedata/dom/services/Strings.java  |   0
 .../extensions/fakedata/dom/services/Urls.java     |   0
 .../extensions/fakedata/dom/services/Uuids.java    |   0
 .../services/blobs/Pawson-Naked-Objects-thesis.pdf | Bin
 .../dom/services/blobs/image01-150x150.jpg         | Bin
 .../dom/services/blobs/image01-2048x1536.jpg       | Bin
 .../dom/services/blobs/image01-240x180.jpg         | Bin
 .../dom/services/blobs/image01-4000x3000.jpg       | Bin
 .../dom/services/blobs/image01-640x480.jpg         | Bin
 .../dom/services/blobs/image02-150x150.jpg         | Bin
 .../dom/services/blobs/image02-2048x1536.jpg       | Bin
 .../dom/services/blobs/image02-240x180.jpg         | Bin
 .../dom/services/blobs/image02-4000x3000.jpg       | Bin
 .../dom/services/blobs/image02-640x480.jpg         | Bin
 .../dom/services/blobs/rick-mugridge-paper.pdf     | Bin
 .../fakedata/dom/services/clobs/RTF-Spec-1.7.rtf   |   0
 .../fakedata/dom/services/clobs/a_and_c.xml        |   0
 .../fakedata/dom/services/clobs/all_well.xml       |   0
 .../fakedata/dom/services/clobs/as_you.xml         |   0
 .../fakedata/dom/services/clobs/com_err.xml        |   0
 .../fakedata/dom/services/clobs/config.rtf         |   0
 .../fakedata/dom/services/clobs/coriolan.xml       |   0
 .../fakedata/dom/services/clobs/cymbelin.xml       |   0
 .../fakedata/dom/services/clobs/dream.xml          |   0
 .../fakedata/dom/services/clobs/dsssl.dtd          |   0
 .../extensions/fakedata/dom/services/clobs/fot.dtd |   0
 .../fakedata/dom/services/clobs/hamlet.xml         |   0
 .../fakedata/dom/services/clobs/hen_iv_1.xml       |   0
 .../fakedata/dom/services/clobs/hen_iv_2.xml       |   0
 .../fakedata/dom/services/clobs/hen_v.xml          |   0
 .../fakedata/dom/services/clobs/hen_vi_1.xml       |   0
 .../fakedata/dom/services/clobs/hen_vi_2.xml       |   0
 .../fakedata/dom/services/clobs/hen_vi_3.xml       |   0
 .../fakedata/dom/services/clobs/hen_viii.xml       |   0
 .../fakedata/dom/services/clobs/j_caesar.xml       |   0
 .../fakedata/dom/services/clobs/john.xml           |   0
 .../fakedata/dom/services/clobs/lear.xml           |   0
 .../extensions/fakedata/dom/services/clobs/lll.xml |   0
 .../fakedata/dom/services/clobs/m_for_m.xml        |   0
 .../fakedata/dom/services/clobs/m_wives.xml        |   0
 .../fakedata/dom/services/clobs/macbeth.xml        |   0
 .../fakedata/dom/services/clobs/merchant.xml       |   0
 .../fakedata/dom/services/clobs/much_ado.xml       |   0
 .../fakedata/dom/services/clobs/othello.xml        |   0
 .../fakedata/dom/services/clobs/pericles.xml       |   0
 .../fakedata/dom/services/clobs/play.dtd           |   0
 .../fakedata/dom/services/clobs/r_and_j.xml        |   0
 .../fakedata/dom/services/clobs/rich_ii.xml        |   0
 .../fakedata/dom/services/clobs/rich_iii.xml       |   0
 .../fakedata/dom/services/clobs/sample.rtf         |   0
 .../fakedata/dom/services/clobs/shaksper.htm       |   0
 .../fakedata/dom/services/clobs/style-sheet.dtd    |   0
 .../fakedata/dom/services/clobs/t_night.xml        |   0
 .../fakedata/dom/services/clobs/taming.xml         |   0
 .../fakedata/dom/services/clobs/tempest.xml        |   0
 .../fakedata/dom/services/clobs/testrtf.rtf        |   0
 .../fakedata/dom/services/clobs/timon.xml          |   0
 .../fakedata/dom/services/clobs/titus.xml          |   0
 .../fakedata/dom/services/clobs/troilus.xml        |   0
 .../fakedata/dom/services/clobs/two_gent.xml       |   0
 .../isis/extensions/fakedata/dom/services/clobs/vs |   0
 .../isis/extensions/fakedata/dom/services/clobs/vx |   0
 .../fakedata/dom/services/clobs/win_tale.xml       |   0
 .../extensions/fakedata/dom/services/clobs/xml.dcl |   0
 .../extensions/fakedata/dom/services/clobs/xml.soc |   0
 .../fakedata/dom/services/FakeDataServiceTest.java |   0
 .../fakedata/integtests/log4j2-test.xml            |   0
 .../{lib => testing}/fakedata/integtests/pom.xml   |   0
 .../FakeDataModuleIntegTestAbstract.java           |   0
 .../integtests/tests/Bootstrap_IntegTest.java      |   0
 .../fakedata/integtests/tests/Smoke_IntegTest.java |   0
 .../fakedata/integtests/toDoItems-actual.xlsx      | Bin
 .../fakedata/integtests/translations.pot           |   0
 .../pages/fixture-scripts/api-and-usage.adoc       |  10 +-
 .../bdd-spec-support/maven-configuration.adoc      |   2 +-
 .../pages/bdd-spec-support/writing-a-bdd-spec.adoc |   4 +-
 .../{lib => testing}/unittestsupport/impl/pom.xml  |   0
 .../unittestsupport/impl}/src/main/doc/antora.yml  |   0
 .../unit-test-support-ext}/_attributes.adoc        |   0
 .../doc/modules/unit-test-support-ext}/nav.adoc    |   0
 .../unit-test-support-ext}/pages/_attributes.adoc  |   0
 .../unit-test-support-ext}/pages/about.adoc        |   5 +-
 .../partials}/_attributes.adoc                     |   0
 .../unit-test-support-ext/partials/module-nav.adoc |   3 +
 .../dom/IsisModuleExtUnitTestSupport.java          |   0
 .../unittestsupport/dom/assertions/Asserting.java  |   0
 .../dom/bean/AbstractBeanPropertiesTest.java       |   0
 .../dom/bean/FixtureDatumFactoriesForAnyPojo.java  |   0
 .../dom/bean/FixtureDatumFactoriesForApplib.java   |   0
 .../dom/bean/FixtureDatumFactoriesForJoda.java     |   0
 .../unittestsupport/dom/bean/PojoTester.java       |   0
 .../unittestsupport/dom/matchers/IsisMatchers.java |   0
 .../dom/privatecons/PrivateConstructorTester.java  |   0
 .../unittestsupport/dom/reflect/ReflectUtils.java  |   0
 .../dom/repo/FinderInteraction.java                |   0
 .../unittestsupport/dom/valuetypes/VT.java         |   0
 .../dom/bean/PojoTesterTest_interference.java      |   0
 .../src/main/doc/modules/mvn/pages/intro.adoc      |   4 +-
 .../src/main/doc/modules/mvn/pages/validate.adoc   |   2 +-
 migration-notes.adoc                               |   1 +
 preview.sh                                         |  12 +-
 scripts/ci/_adoc-antora.sh                         |  44 ++++
 scripts/ci/_adoc-copy-examples.sh                  |  16 ++
 scripts/ci/{build-site.sh => _adoc-gen-config.sh}  |  42 ++--
 ...{print-environment.sh => _print-environment.sh} |   0
 scripts/ci/build-core.sh                           |   2 +-
 scripts/ci/build-demo-app.sh                       |   2 +-
 scripts/ci/build-site.sh                           |  69 +-----
 scripts/ci/build-smoketests.sh                     |   2 +-
 antora/playbooks/site-core.yml => site-core.yml    |   5 +-
 .../site-refguide.yml => site-extensions.yml       |  13 +-
 .../playbooks/site-vro.yml => site-incubator.yml   |  13 +-
 antora/playbooks/site-vw.yml => site-legacy.yml    |  16 +-
 antora/playbooks/site-odn.yml => site-pjdo.yml     |   4 +-
 .../site-refguide.yml => site-refguide.yml         |   5 +-
 .../site-security.yml => site-security.yml         |  17 +-
 .../playbooks/site-testing.yml => site-testing.yml |   5 +-
 antora/playbooks/site-toc.yml => site-toc.yml      |   6 +-
 .../site-userguide.yml => site-userguide.yml       |   5 +-
 antora/playbooks/site-vro.yml => site-vro.yml      |   2 +-
 antora/playbooks/site-vw.yml => site-vw.yml        |   2 +-
 site.yml                                           |  72 ++++--
 .../main/doc/modules/helloworld/pages/about.adoc   |   4 +-
 .../main/doc/modules/simpleapp/pages/about.adoc    |   6 +-
 sync-adoc.sh                                       |   8 +
 755 files changed, 1657 insertions(+), 819 deletions(-)
 copy {extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support => antora/components/toc/modules/ROOT/pages/landing-page}/_attributes.adoc (100%)
 rename antora/components/toc/modules/ROOT/pages/{ => landing-page}/components.adoc (95%)
 rename antora/components/toc/modules/ROOT/pages/{extensions.adoc => landing-page/extension-catalog.adoc} (75%)
 rename antora/components/toc/modules/ROOT/pages/{ => landing-page}/guides.adoc (95%)
 rename antora/components/toc/modules/ROOT/pages/{ => landing-page}/internal.adoc (100%)
 rename antora/components/toc/modules/ROOT/pages/{ => landing-page}/quick-start.adoc (54%)
 create mode 100644 antora/components/toc/modules/ROOT/pages/landing-page/releases.adoc
 rename antora/components/toc/modules/ROOT/pages/{ => landing-page}/support.adoc (97%)
 delete mode 100644 antora/playbooks/site-other.yml
 delete mode 100644 core/applib/src/main/doc/modules/applib-ant/examples/.gitignore
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Action.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/ActionLayout.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Auditing.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/BookmarkPolicy.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Bounding.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Collection.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/CollectionLayout.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/CommandExecuteIn.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/CommandPersistence.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/CommandReification.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Constants.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Contributed.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Defaulted.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/DomainObject.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/DomainObjectLayout.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/DomainService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/DomainServiceLayout.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Editing.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/EqualByContent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Facets.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/HomePage.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/LabelPosition.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/MemberOrder.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/MementoSerialization.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/MinLength.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Mixin.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Module.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Nature.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/NatureOfService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Navigable.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Optionality.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/OrderPrecedence.java (97%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Parameter.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/ParameterLayout.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Programmatic.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Projecting.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/PromptStyle.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Property.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/PropertyLayout.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Publishing.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/PublishingChangeKind.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Redirect.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/RenderDay.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Repainting.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/RestrictTo.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/SemanticsOf.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Title.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Value.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/ViewModel.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/ViewModelLayout.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/Where.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-ant/examples}/annotation/package-info.java (100%)
 delete mode 100644 core/applib/src/main/doc/modules/applib-cm/examples/.gitignore
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/clock/Clock.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/clock/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/domain/DomainObjectList.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/ActionArgumentUsabilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/ActionArgumentVisibilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/domain/AbstractDomainEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/domain/ActionDomainEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/domain/CollectionDomainEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/domain/EventObjectBase.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/domain/PropertyDomainEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/AbstractLifecycleEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/ObjectCreatedEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/ObjectLoadedEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/ObjectPersistedEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/ObjectPersistingEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/ObjectRemovingEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/ObjectUpdatedEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/lifecycle/ObjectUpdatingEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/ui/AbstractUiEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/ui/CssClassUiEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/ui/IconUiEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/ui/LayoutUiEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/events/ui/TitleUiEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/ActionLayoutData.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/ActionLayoutDataOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/CollectionLayoutData.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/CollectionLayoutDataOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/DomainObjectLayoutData.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/DomainObjectLayoutDataOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/FieldSet.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/FieldSetOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/HasBookmarking.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/HasCssClass.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/HasCssClassFa.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/HasDescribedAs.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/HasHidden.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/HasNamed.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/MemberRegion.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/MemberRegionOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/Owned.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/Owner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/PropertyLayoutData.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/ServiceActionLayoutData.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/ServiceActionLayoutDataOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/component/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/Grid.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/GridAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3ClearFix.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3ClearFixHidden.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3ClearFixVisible.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3Col.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3Element.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3ElementAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3Grid.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3Row.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3RowContent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3RowContentOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3RowOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3Tab.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3TabGroup.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3TabGroupOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/BS3TabOwner.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/HasCssId.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/Size.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/SizeSpan.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/WithinGrid.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/grid/bootstrap3/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/links/Link.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/links/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/Menu.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/MenuBar.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/MenuBars.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/MenuBarsAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/MenuSection.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/bootstrap3/BS3Menu.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/bootstrap3/BS3MenuBar.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/bootstrap3/BS3MenuBars.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/bootstrap3/BS3MenuSection.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/menubars/bootstrap3/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/layout/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/MixinConstants.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/dto/Dto.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/dto/DtoMappingHelper.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/dto/Dto_downloadXml.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/dto/Dto_downloadXsd.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/dto/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/layout/Object_downloadLayoutXml.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/layout/Object_openRestApi.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/layout/Object_rebuildMetamodel.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/metamodel/Object_downloadMetaModelXml.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/metamodel/Object_objectIdentifier.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/metamodel/Object_objectType.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/timestamp/HoldsUpdatedAt.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/timestamp/HoldsUpdatedBy.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/timestamp/Timestampable.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/mixins/timestamp/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/security/RoleMemento.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/security/UserMemento.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/security/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/AbstractSpecification.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/AbstractSpecification2.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/Specification.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/Specification2.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/SpecificationAnd.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/SpecificationNot.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/SpecificationOr.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/spec/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/LazyTreeNode.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreeAdapter.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreeNode.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreeNode_iteratorBreadthFirst.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreeNode_iteratorDepthFirst.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreeNode_iteratorHierarchyUp.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreePath.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreePath_Default.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreeState.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/tree/TreeState_Default.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/Enums.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/Equality.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/Hashing.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/JaxbAdapters.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/JaxbUtil.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/ObjectContract_Empty.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/ObjectContract_Impl.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/ObjectContract_Parser.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/ObjectContracts.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/ReasonBuffer.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/ReasonBuffer2.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/Reasons.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/TitleBuffer.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/TitleBufferException.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/ToString.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/schema/ChangesDtoUtils.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/schema/CommandDtoUtils.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/schema/CommonDtoUtils.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/schema/InteractionDtoUtils.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/util/schema/MemberExecutionDtoUtils.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Blob.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/BlobClobFactory.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Clob.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Color.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Image.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/LocalResourcePath.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Magnitude.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Markup.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Money.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/NamedWithMimeType.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Password.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/Percentage.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-cm/examples}/value/package-info.java (100%)
 delete mode 100644 core/applib/src/main/doc/modules/applib-svc/examples/.gitignore
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/HasUniqueId.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/HasUsername.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/RepresentsInteractionMemberExecution.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/WithTransactionScope.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/acceptheader/AcceptHeaderService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/appfeat/ApplicationFeatureRepository.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/appfeat/ApplicationMemberType.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/appfeat/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/audit/AuditEntryPropertyIdType.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/audit/AuditEntryPropertyValueType.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/audit/AuditerService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/audit/AuditerServiceLogging.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/audit/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/background/BackgroundCommandService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/background/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/bookmark/Bookmark.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/bookmark/BookmarkHolder.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/bookmark/BookmarkHolder_lookup.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/bookmark/BookmarkHolder_object.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/bookmark/BookmarkService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/bookmark/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/bookmarkui/BookmarkUiService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/clock/ClockService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/clock/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/Command.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/CommandContext.java (96%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/CommandDefault.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/CommandDtoProcessor.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/CommandDtoProcessorForActionAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/CommandDtoProcessorForPropertyAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/CommandExecutorService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/CommandWithDto.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/command/spi/CommandService.java (89%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/confview/ConfigurationMenu.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/confview/ConfigurationProperty.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/confview/ConfigurationProperty.layout.xml (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/confview/ConfigurationProperty.png (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/confview/ConfigurationViewService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/confview/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/conmap/ContentMappingService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/conmap/command/ContentMappingServiceForCommandDto.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/conmap/command/ContentMappingServiceForCommandsDto.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/conmap/command/spi/CommandDtoProcessorService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/conmap/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/email/EmailService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/email/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/error/ErrorDetails.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/error/ErrorReportingService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/error/Ticket.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/error/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/eventbus/EventBusService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/eventbus/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/exceprecog/ExceptionRecognizer.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/exceprecog/ExceptionRecognizerAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/exceprecog/ExceptionRecognizerComposite.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/exceprecog/ExceptionRecognizerForType.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/exceprecog/TranslatableException.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/exceprecog/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/factory/FactoryService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/factory/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/grid/GridLoaderService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/grid/GridService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/grid/GridSystemService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/grid/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/health/Health.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/health/HealthCheckService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/hint/HintStore.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/hint/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/i18n/LocaleProvider.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/i18n/TranslatableString.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/i18n/TranslationService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/i18n/TranslationsResolver.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/i18n/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/iactn/Interaction.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/iactn/InteractionContext.java (92%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/iactn/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/inject/ServiceInjector.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/jaxb/CatalogingSchemaOutputResolver.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/jaxb/JaxbService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/jaxb/JaxbServiceDefault.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/jaxb/StreamResultWithWriter.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/jaxb/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/layout/LayoutService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/layout/LayoutServiceMenu.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/layout/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/linking/DeepLinkService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/linking/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/menu/MenuBarsLoaderService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/menu/MenuBarsService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/message/MessageService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/message/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/metamodel/DomainMember.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/metamodel/DomainModel.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/metamodel/MetaModelService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/metamodel/MetaModelServicesMenu.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/metamodel/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/metrics/MetricsService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/metrics/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/publish/PublishedObjects.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/publish/PublisherService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/publish/PublisherServiceLogging.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/publish/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/queryresultscache/QueryResultCacheControl.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/queryresultscache/QueryResultsCache.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/queryresultscache/QueryResultsCacheDefault.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/queryresultscache/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/registry/ServiceRegistry.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/registry/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/repository/RepositoryService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/repository/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/routing/RoutingService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/routing/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/scratchpad/Scratchpad.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/scratchpad/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/session/SessionLoggingService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/session/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/sessmgmt/SessionManagementService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/sessmgmt/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/sudo/SudoService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/sudo/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/swagger/SwaggerService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/swagger/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/tablecol/TableColumnOrderService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/title/TitleService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/title/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/urlencoding/UrlEncodingService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/urlencoding/UrlEncodingServiceWithCompression.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/urlencoding/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/user/UserService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/user/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userprof/UserProfileService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userprof/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userreg/EmailNotificationService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userreg/UserDetails.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userreg/UserRegistrationService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userreg/events/EmailEventAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userreg/events/EmailRegistrationEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userreg/events/PasswordResetEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/userreg/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/AsyncWrap.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/DisabledException.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/HiddenException.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/InteractionException.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/InvalidException.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/WrapperFactory.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/WrappingObject.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/AccessEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ActionArgumentEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ActionInvocationEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ActionUsabilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ActionVisibilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/CollectionAccessEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/CollectionAddToEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/CollectionMethodEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/CollectionRemoveFromEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/CollectionUsabilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/CollectionVisibilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/InteractionEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ObjectTitleEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ObjectValidityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ObjectVisibilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ParseValueEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/PropertyAccessEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/PropertyModifyEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/PropertyUsabilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/PropertyVisibilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ProposedHolderEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/UsabilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/ValidityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/VisibilityEvent.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/events/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/listeners/InteractionAdapter.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/listeners/InteractionListener.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/wrapper/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xactn/Transaction.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xactn/TransactionId.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xactn/TransactionService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xactn/TransactionState.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xactn/package-info.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xmlsnapshot/XmlSnapshotService.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xmlsnapshot/XmlSnapshotServiceAbstract.java (100%)
 copy core/applib/src/main/{java/org/apache/isis/applib => doc/modules/applib-svc/examples}/services/xmlsnapshot/package-info.java (100%)
 delete mode 100644 core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc
 delete mode 100644 core/config/src/main/doc/modules/config/examples/.gitignore
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/Other.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.authentication.shiro.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.persistor.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.persistor.datanucleus.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.persistor.datanucleus.impl.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.reflector.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.reflector.facet.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.reflector.validator.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.service.email.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.services.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.viewer.restfulobjects.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.viewer.wicket.adoc
 create mode 100644 core/config/src/main/doc/modules/config/examples/generated/isis.viewers.adoc
 create mode 100644 core/persistence/jdo/src/main/doc/modules/ROOT/partials/component-nav.adoc
 copy core/persistence/jdo/src/main/doc/modules/ROOT/{nav.adoc => partials/module-nav.adoc} (100%)
 rename core/runtime-services/src/main/java/org/apache/isis/runtime/services/{background => command}/CommandExecutorServiceDefault.java (99%)
 copy extensions/{persistence/hsqldbmgr => lib/base/impl}/src/main/doc/antora.yml (100%)
 rename extensions/{persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr => lib/base/impl/src/main/doc/modules/base}/_attributes.adoc (100%)
 copy extensions/{persistence/h2console/src/main/doc/modules/h2console => lib/base/impl/src/main/doc/modules/base}/nav.adoc (100%)
 rename extensions/{persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials => lib/base/impl/src/main/doc/modules/base/pages}/_attributes.adoc (100%)
 copy extensions/{persistence/h2console/src/main/doc/modules/h2console => lib/base/impl/src/main/doc/modules/base}/pages/about.adoc (98%)
 rename extensions/{persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages => lib/base/impl/src/main/doc/modules/base/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/lib/base/impl/src/main/doc/modules/base/partials/module-nav.adoc
 copy extensions/{persistence/h2console => lib/docx/impl}/pom.xml (70%)
 rename extensions/{persistence/h2console => lib/docx/impl}/src/main/doc/antora.yml (100%)
 rename extensions/{persistence/h2console/src/main/doc/modules/h2console => lib/docx/impl/src/main/doc/modules/docx}/_attributes.adoc (100%)
 copy extensions/{persistence/h2console/src/main/doc/modules/h2console => lib/docx/impl/src/main/doc/modules/docx}/nav.adoc (100%)
 rename extensions/{persistence/h2console/src/main/doc/modules/h2console/partials => lib/docx/impl/src/main/doc/modules/docx/pages}/_attributes.adoc (100%)
 copy extensions/{persistence/h2console/src/main/doc/modules/h2console => lib/docx/impl/src/main/doc/modules/docx}/pages/about.adoc (98%)
 rename extensions/{persistence/h2console/src/main/doc/modules/h2console/pages => lib/docx/impl/src/main/doc/modules/docx/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/lib/docx/impl/src/main/doc/modules/docx/partials/module-nav.adoc
 copy extensions/{persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java => lib/docx/impl/src/main/java/org/apache/isis/extensions/docx/dom/IsisModuleExtDocx.java} (89%)
 copy extensions/{persistence/hsqldbmgr => lib/excel/impl}/src/main/doc/antora.yml (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/lib/excel/impl/src/main/doc/modules/excel}/_attributes.adoc (100%)
 copy extensions/{persistence/h2console/src/main/doc/modules/h2console => lib/excel/impl/src/main/doc/modules/excel}/nav.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/lib/excel/impl/src/main/doc/modules/excel}/pages/_attributes.adoc (100%)
 copy extensions/{persistence/h2console/src/main/doc/modules/h2console => lib/excel/impl/src/main/doc/modules/excel}/pages/about.adoc (98%)
 copy {starters/src/main/doc/modules/simpleapp/pages => extensions/lib/excel/impl/src/main/doc/modules/excel/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/lib/excel/impl/src/main/doc/modules/excel/partials/module-nav.adoc
 copy extensions/persistence/{h2console => flywayjdo/impl}/pom.xml (68%)
 create mode 100644 extensions/persistence/flywayjdo/impl/src/main/doc/antora.yml
 copy {starters/src/main/doc/modules/simpleapp => extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo}/_attributes.adoc (100%)
 copy extensions/persistence/{h2console/src/main/doc/modules/h2console => flywayjdo/impl/src/main/doc/modules/flywayjdo}/nav.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo}/pages/_attributes.adoc (100%)
 copy extensions/persistence/{hsqldbmgr/src/main/doc/modules/hsqldbmgr => flywayjdo/impl/src/main/doc/modules/flywayjdo}/pages/about.adoc (97%)
 copy {starters/src/main/doc/modules/simpleapp/pages => extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/module-nav.adoc
 copy extensions/persistence/{hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java => flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java} (89%)
 rename extensions/persistence/h2console/{ => impl}/pom.xml (97%)
 copy extensions/persistence/{hsqldbmgr => h2console/impl}/src/main/doc/antora.yml (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/persistence/h2console/impl/src/main/doc/modules/h2console}/_attributes.adoc (100%)
 rename extensions/persistence/h2console/{ => impl}/src/main/doc/modules/h2console/nav.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/persistence/h2console/impl/src/main/doc/modules/h2console}/pages/_attributes.adoc (100%)
 copy extensions/persistence/h2console/{ => impl}/src/main/doc/modules/h2console/pages/about.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp/pages => extensions/persistence/h2console/impl/src/main/doc/modules/h2console/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/persistence/h2console/impl/src/main/doc/modules/h2console/partials/module-nav.adoc
 rename extensions/persistence/h2console/{ => impl}/src/main/java/org/apache/isis/extensions/h2console/dom/IsisModuleExtH2Console.java (100%)
 rename extensions/persistence/h2console/{ => impl}/src/main/java/org/apache/isis/extensions/h2console/dom/services/H2ManagerMenu.java (100%)
 rename extensions/persistence/h2console/{ => impl}/src/main/java/org/apache/isis/extensions/h2console/dom/webmodule/WebModuleH2Console.java (100%)
 delete mode 100644 extensions/persistence/h2console/src/main/doc/modules/h2console/partials/module-nav.adoc
 rename extensions/persistence/hsqldbmgr/{ => impl}/pom.xml (97%)
 rename extensions/persistence/hsqldbmgr/{ => impl}/src/main/doc/antora.yml (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr}/_attributes.adoc (100%)
 rename extensions/persistence/hsqldbmgr/{ => impl}/src/main/doc/modules/hsqldbmgr/nav.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr}/pages/_attributes.adoc (100%)
 copy extensions/persistence/hsqldbmgr/{ => impl}/src/main/doc/modules/hsqldbmgr/pages/about.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp/pages => extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc
 rename extensions/persistence/hsqldbmgr/{ => impl}/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java (100%)
 rename extensions/persistence/hsqldbmgr/{ => impl}/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.java (100%)
 delete mode 100644 extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc
 rename extensions/{lib => testing}/fakedata/fixture/.gitignore (100%)
 rename extensions/{lib => testing}/fakedata/fixture/logging-dn-enhance.properties (100%)
 rename extensions/{lib => testing}/fakedata/fixture/pom.xml (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/META-INF/persistence.xml (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/IsisModuleExtFakeDataFixtures.java (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/EnumOf3.java (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.java (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.png (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAllMenu.java (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_create3.java (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_tearDown.java (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_create_withFakeData.java (100%)
 rename extensions/{lib => testing}/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_update_withFakeData.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/pom.xml (100%)
 copy {legacy/testsupport/mavenplugin => extensions/testing/fakedata/impl}/src/main/doc/antora.yml (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/testing/fakedata/impl/src/main/doc/modules/fakedata}/_attributes.adoc (100%)
 copy {legacy/testsupport/mavenplugin/src/main/doc/modules/mvn => extensions/testing/fakedata/impl/src/main/doc/modules/fakedata}/nav.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/testing/fakedata/impl/src/main/doc/modules/fakedata}/pages/_attributes.adoc (100%)
 rename extensions/{persistence/h2console/src/main/doc/modules/h2console => testing/fakedata/impl/src/main/doc/modules/fakedata}/pages/about.adoc (98%)
 copy {starters/src/main/doc/modules/simpleapp/pages => extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/partials/module-nav.adoc
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/IsisModuleExtFakeData.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/AbstractRandomValueGenerator.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Addresses.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigDecimals.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigIntegers.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Books.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Booleans.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Bytes.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Chars.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Collections.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Comms.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/CreditCards.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Doubles.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Enums.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataService.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Floats.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Integers.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisBlobs.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisClobs.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisMoneys.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisPasswords.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8DateTimes.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8LocalDates.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8Periods.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlDates.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlTimestamps.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaUtilDates.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Longs.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Lorem.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Names.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Shorts.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Strings.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Urls.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Uuids.java (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/Pawson-Naked-Objects-thesis.pdf (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-150x150.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-2048x1536.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-240x180.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-4000x3000.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-640x480.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-150x150.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-2048x1536.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-240x180.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-4000x3000.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-640x480.jpg (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/rick-mugridge-paper.pdf (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/RTF-Spec-1.7.rtf (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/a_and_c.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/all_well.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/as_you.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/com_err.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/config.rtf (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/coriolan.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/cymbelin.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dream.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dsssl.dtd (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/fot.dtd (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hamlet.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_1.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_2.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_v.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_1.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_2.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_3.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_viii.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/j_caesar.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/john.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lear.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lll.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_for_m.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_wives.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/macbeth.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/merchant.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/much_ado.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/othello.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/pericles.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/play.dtd (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/r_and_j.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_ii.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_iii.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/sample.rtf (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/shaksper.htm (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/style-sheet.dtd (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/t_night.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/taming.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/tempest.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/testrtf.rtf (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/timon.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/titus.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/troilus.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/two_gent.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vs (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vx (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/win_tale.xml (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.dcl (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.soc (100%)
 rename extensions/{lib => testing}/fakedata/impl/src/test/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataServiceTest.java (100%)
 rename extensions/{lib => testing}/fakedata/integtests/log4j2-test.xml (100%)
 rename extensions/{lib => testing}/fakedata/integtests/pom.xml (100%)
 rename extensions/{lib => testing}/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/FakeDataModuleIntegTestAbstract.java (100%)
 rename extensions/{lib => testing}/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Bootstrap_IntegTest.java (100%)
 rename extensions/{lib => testing}/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Smoke_IntegTest.java (100%)
 rename extensions/{lib => testing}/fakedata/integtests/toDoItems-actual.xlsx (100%)
 rename extensions/{lib => testing}/fakedata/integtests/translations.pot (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/pom.xml (100%)
 copy {legacy/testsupport/mavenplugin => extensions/testing/unittestsupport/impl}/src/main/doc/antora.yml (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext}/_attributes.adoc (100%)
 copy {legacy/testsupport/mavenplugin/src/main/doc/modules/mvn => extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext}/nav.adoc (100%)
 copy {starters/src/main/doc/modules/simpleapp => extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext}/pages/_attributes.adoc (100%)
 rename extensions/{persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr => testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext}/pages/about.adoc (95%)
 copy {starters/src/main/doc/modules/simpleapp/pages => extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/partials}/_attributes.adoc (100%)
 create mode 100644 extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/partials/module-nav.adoc
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/IsisModuleExtUnitTestSupport.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/assertions/Asserting.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/AbstractBeanPropertiesTest.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForAnyPojo.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForApplib.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForJoda.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTester.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/matchers/IsisMatchers.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/privatecons/PrivateConstructorTester.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/reflect/ReflectUtils.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/repo/FinderInteraction.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/valuetypes/VT.java (100%)
 rename extensions/{lib => testing}/unittestsupport/impl/src/test/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTesterTest_interference.java (100%)
 create mode 100644 scripts/ci/_adoc-antora.sh
 create mode 100644 scripts/ci/_adoc-copy-examples.sh
 copy scripts/ci/{build-site.sh => _adoc-gen-config.sh} (65%)
 rename scripts/ci/{print-environment.sh => _print-environment.sh} (100%)
 rename antora/playbooks/site-core.yml => site-core.yml (99%)
 copy antora/playbooks/site-refguide.yml => site-extensions.yml (74%)
 copy antora/playbooks/site-vro.yml => site-incubator.yml (77%)
 copy antora/playbooks/site-vw.yml => site-legacy.yml (74%)
 rename antora/playbooks/site-odn.yml => site-pjdo.yml (89%)
 rename antora/playbooks/site-refguide.yml => site-refguide.yml (91%)
 rename antora/playbooks/site-security.yml => site-security.yml (87%)
 rename antora/playbooks/site-testing.yml => site-testing.yml (92%)
 rename antora/playbooks/site-toc.yml => site-toc.yml (86%)
 rename antora/playbooks/site-userguide.yml => site-userguide.yml (89%)
 rename antora/playbooks/site-vro.yml => site-vro.yml (96%)
 rename antora/playbooks/site-vw.yml => site-vw.yml (96%)
 create mode 100644 sync-adoc.sh


[isis] 13/25: ISIS-2062: more messing about with scripts

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 25ca1e84d5ff2055a9ebf51b3f4afef1dfda0366
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:40:19 2019 +0000

    ISIS-2062: more messing about with scripts
---
 scripts/ci/_adoc-antora.sh | 1 -
 scripts/ci/build-site.sh   | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
index c6f2106..cbac566 100644
--- a/scripts/ci/_adoc-antora.sh
+++ b/scripts/ci/_adoc-antora.sh
@@ -19,7 +19,6 @@ if [ ! -f "$PLAYBOOK" ]; then
   PLAYBOOK=site.yml
 fi
 
-PLAYBOOK=$PROJECT_ROOT_PATH/$PLAYBOOK
 echo "\$PLAYBOOK = $PLAYBOOK"
 
 if [ -z "$REVISION" ]; then
diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index a082f76..8ffb9f1 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -21,7 +21,7 @@ if [ "$WC" -ne "0" ]; then
   exit 1
 fi
 
-bash $SCRIPT_DIR/_adoc-antora.sh $*
+bash $SCRIPT_DIR/_adoc-antora.sh ${PROJECT_ROOT_PATH}/$*
 
 # add a marker, that tells github not to use jekyll on the github pages folder
 touch ${PROJECT_ROOT_PATH}/antora/target/site/.nojekyll


[isis] 14/25: ISIS-2062: more messing about with scripts

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 b8d7028cd4d0cb8a23320d89921ee4b1bdef5fdd
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:41:47 2019 +0000

    ISIS-2062: more messing about with scripts
---
 preview.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/preview.sh b/preview.sh
index 37beaa5..03caaa5 100644
--- a/preview.sh
+++ b/preview.sh
@@ -7,6 +7,8 @@ fi
 
 echo "building ..."
 export ANTORA_CMD=antora
+
+echo "\$PLAYBOOK_FILE = $PLAYBOOK_FILE"
 sh build-site.sh $PLAYBOOK_FILE || exit 1
 
 echo "serving ..."


[isis] 17/25: ISIS-2062: reconciles master 'site.yml' with individual site-xxx.yml

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 e11c242456d53085ac6ca455dc27c2c4bb6b21ec
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 16 16:56:02 2019 +0000

    ISIS-2062: reconciles master 'site.yml' with individual site-xxx.yml
---
 antora/playbooks/site-core.yml                     |  5 +-
 .../{site-refguide.yml => site-extensions.yml}     | 13 ++--
 .../playbooks/{site-vro.yml => site-incubator.yml} | 13 ++--
 antora/playbooks/{site-vw.yml => site-legacy.yml}  | 16 ++---
 antora/playbooks/site-other.yml                    | 82 ----------------------
 antora/playbooks/site-refguide.yml                 |  5 +-
 antora/playbooks/site-security.yml                 | 17 ++---
 antora/playbooks/site-testing.yml                  |  5 +-
 antora/playbooks/site-toc.yml                      |  6 +-
 antora/playbooks/site-userguide.yml                |  5 +-
 antora/playbooks/site-vro.yml                      |  2 +-
 antora/playbooks/site-vw.yml                       |  2 +-
 site.yml                                           | 48 +++++++------
 13 files changed, 72 insertions(+), 147 deletions(-)

diff --git a/antora/playbooks/site-core.yml b/antora/playbooks/site-core.yml
index a054a86..3759e2a 100644
--- a/antora/playbooks/site-core.yml
+++ b/antora/playbooks/site-core.yml
@@ -8,10 +8,11 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/core # core
+      start_path: antora/components/toc # toc
       branches: HEAD
+
     - url: .
-      start_path: antora/components/toc # toc
+      start_path: antora/components/core # core
       branches: HEAD
 
 # core
diff --git a/antora/playbooks/site-refguide.yml b/antora/playbooks/site-extensions.yml
similarity index 74%
copy from antora/playbooks/site-refguide.yml
copy to antora/playbooks/site-extensions.yml
index 1d47d57..d669d53 100644
--- a/antora/playbooks/site-refguide.yml
+++ b/antora/playbooks/site-extensions.yml
@@ -8,21 +8,22 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/refguide
+      start_path: antora/components/toc # toc
       branches: HEAD
+
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/extensions # extensions
       branches: HEAD
 
-# core
+# extensions
     - url: .
-      start_path: core/applib/src/main/doc # refguide
+      start_path: extensions/core/spring/src/main/doc # extensions
       branches: HEAD
     - url: .
-      start_path: core/config/src/main/doc # refguide
+      start_path: extensions/persistence/h2console/src/main/doc # extensions
       branches: HEAD
     - url: .
-      start_path: core/schema/src/main/doc # refguide
+      start_path: extensions/persistence/hsqldbmgr/src/main/doc # extensions
       branches: HEAD
 
 
diff --git a/antora/playbooks/site-vro.yml b/antora/playbooks/site-incubator.yml
similarity index 77%
copy from antora/playbooks/site-vro.yml
copy to antora/playbooks/site-incubator.yml
index f6adcfe..64189c4 100644
--- a/antora/playbooks/site-vro.yml
+++ b/antora/playbooks/site-incubator.yml
@@ -8,20 +8,19 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/toc # toc
       branches: HEAD
 
-# core
     - url: .
-      start_path: core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/doc # vro
+      start_path: antora/components/incubator # incubator
       branches: HEAD
+
+# incubator
     - url: .
-      start_path: core/viewers/restfulobjects/src/main/doc # vro
+      start_path: incubator/core/model/src/main/doc # incubator
       branches: HEAD
-
-# extensions
     - url: .
-      start_path: extensions/vro/restclient/src/main/doc # vro
+      start_path: incubator/core/microprofile/src/main/doc # incubator
       branches: HEAD
 
 
diff --git a/antora/playbooks/site-vw.yml b/antora/playbooks/site-legacy.yml
similarity index 74%
copy from antora/playbooks/site-vw.yml
copy to antora/playbooks/site-legacy.yml
index 45b7438..c6eef96 100644
--- a/antora/playbooks/site-vw.yml
+++ b/antora/playbooks/site-legacy.yml
@@ -8,29 +8,29 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/toc # toc
       branches: HEAD
 
-# core
     - url: .
-      start_path: core/viewers/wicket/src/main/doc # vw
+      start_path: antora/components/legacy # legacy
       branches: HEAD
 
-# extensions
+# legacy
     - url: .
-      start_path: extensions/vw/asciidoc/src/main/doc # vw
+      start_path: legacy/core/applib/src/main/doc # legacy
       branches: HEAD
     - url: .
-      start_path: extensions/vw/exceldownload/src/main/doc # vw
+      start_path: legacy/core/commons/src/main/doc # legacy
       branches: HEAD
     - url: .
-      start_path: extensions/vw/markdown/src/main/doc # vw
+      start_path: legacy/core/runtime/src/main/doc # legacy
       branches: HEAD
     - url: .
-      start_path: extensions/vw/sse/src/main/doc # vw
+      start_path: legacy/vro/restclient/src/main/doc # legacy
       branches: HEAD
 
 
+
 ui:
   bundle:
     url: ../isis-antora/build/ui-bundle.zip
diff --git a/antora/playbooks/site-other.yml b/antora/playbooks/site-other.yml
deleted file mode 100644
index 581aed6..0000000
--- a/antora/playbooks/site-other.yml
+++ /dev/null
@@ -1,82 +0,0 @@
-site:
-  title: Apache Isis
-  url: https://isis.apache.org/
-  start_page: toc:ROOT:about.adoc
-
-content:
-  sources:
-
-# antora
-    - url: .
-      start_path: antora/components/extensions # other
-      branches: HEAD
-    - url: .
-      start_path: antora/components/incubator # other
-      branches: HEAD
-    - url: .
-      start_path: antora/components/legacy # other
-      branches: HEAD
-    - url: .
-      start_path: antora/components/toc
-      branches: HEAD
-
-# incubator
-    - url: .
-      start_path: incubator/core/model/src/main/doc # other
-      branches: HEAD
-    - url: .
-      start_path: incubator/core/microprofile/src/main/doc # other
-      branches: HEAD
-
-# legacy
-    - url: .
-      start_path: legacy/core/applib/src/main/doc # other
-      branches: HEAD
-    - url: .
-      start_path: legacy/core/commons/src/main/doc # other
-      branches: HEAD
-    - url: .
-      start_path: legacy/core/runtime/src/main/doc # other
-      branches: HEAD
-    - url: .
-      start_path: legacy/vro/restclient/src/main/doc # other
-      branches: HEAD
-
-# extensions
-    - url: .
-      start_path: extensions/core/spring/src/main/doc # other
-      branches: HEAD
-    - url: .
-      start_path: extensions/persistence/h2console/src/main/doc # other
-      branches: HEAD
-    - url: .
-      start_path: extensions/persistence/hsqldbmgr/src/main/doc # other
-      branches: HEAD
-
-
-ui:
-  bundle:
-    url: ../isis-antora/build/ui-bundle.zip
-#    url: https://github.com/apache/isis-antora/blob/master/build/ui-bundle.zip?raw=true
-    #url: ./antora/theme/ui-bundle.zip
-    snapshot: true
-  supplemental_files: antora/supplemental-ui
-
-asciidoc:
-  extensions:
-    - asciidoctor-plantuml
-    - ./antora/lib/lorem
-    - ./antora/lib/jira-issue
-    - ./antora/lib/powershell
-  attributes:
-    experimental: ""
-    idprefix: ""
-    idseparator: "-"
-    plantuml-server-url: "http://www.plantuml.com/plantuml"
-    isiscurr: "2.0.0-M2"
-    isisnext: "2.0.0-M3"
-    isisnextafter: "2.0.0-M4"
-    :isisdevafter: "2.0.0-M4-SNAPSHOT"
-
-output:
-  dir: antora/target/site
diff --git a/antora/playbooks/site-refguide.yml b/antora/playbooks/site-refguide.yml
index 1d47d57..ef1e15b 100644
--- a/antora/playbooks/site-refguide.yml
+++ b/antora/playbooks/site-refguide.yml
@@ -8,10 +8,11 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/refguide
+      start_path: antora/components/toc # toc
       branches: HEAD
+
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/refguide # refguide
       branches: HEAD
 
 # core
diff --git a/antora/playbooks/site-security.yml b/antora/playbooks/site-security.yml
index 854eb2d..cbba7d4 100644
--- a/antora/playbooks/site-security.yml
+++ b/antora/playbooks/site-security.yml
@@ -8,10 +8,11 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/security
+      start_path: antora/components/toc # toc
       branches: HEAD
+
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/security # security
       branches: HEAD
 
 # core
@@ -30,22 +31,22 @@ content:
 
 # extensions
     - url: .
-      start_path: extensions/security/secman/src/main/doc # security secman
+      start_path: extensions/security/secman/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/api/src/main/doc # security secman
+      start_path: extensions/security/secman/api/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # security secman
+      start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/model/src/main/doc # security secman
+      start_path: extensions/security/secman/model/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/persistence-jdo/src/main/doc # security secman
+      start_path: extensions/security/secman/pjdo/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/shiro-shiro/src/main/doc # security secman
+      start_path: extensions/security/secman/shiro-realm/src/main/doc # security
       branches: HEAD
     - url: .
       start_path: extensions/security/shiro-realm-ldap/src/main/doc # security
diff --git a/antora/playbooks/site-testing.yml b/antora/playbooks/site-testing.yml
index 92b6a3b..dc9cf85 100644
--- a/antora/playbooks/site-testing.yml
+++ b/antora/playbooks/site-testing.yml
@@ -8,10 +8,11 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/testing
+      start_path: antora/components/toc # toc
       branches: HEAD
+
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/testing # testing
       branches: HEAD
 
 # core
diff --git a/antora/playbooks/site-toc.yml b/antora/playbooks/site-toc.yml
index edbdb3f9..1ce43e4 100644
--- a/antora/playbooks/site-toc.yml
+++ b/antora/playbooks/site-toc.yml
@@ -8,17 +8,17 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/toc # toc
       branches: HEAD
 
 # starters
     - url: .
-      start_path: starters/src/main/doc # starters
+      start_path: starters/src/main/doc # toc
       branches: HEAD
 
 # mavendeps
     - url: .
-      start_path: mavendeps/src/main/doc
+      start_path: mavendeps/src/main/doc # toc
       branches: HEAD
 
 
diff --git a/antora/playbooks/site-userguide.yml b/antora/playbooks/site-userguide.yml
index 823803f..d84f929 100644
--- a/antora/playbooks/site-userguide.yml
+++ b/antora/playbooks/site-userguide.yml
@@ -8,10 +8,11 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/toc # toc
       branches: HEAD
+
     - url: .
-      start_path: antora/components/userguide
+      start_path: antora/components/userguide # userguide
       branches: HEAD
 
 
diff --git a/antora/playbooks/site-vro.yml b/antora/playbooks/site-vro.yml
index f6adcfe..d356b17 100644
--- a/antora/playbooks/site-vro.yml
+++ b/antora/playbooks/site-vro.yml
@@ -8,7 +8,7 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/toc # toc
       branches: HEAD
 
 # core
diff --git a/antora/playbooks/site-vw.yml b/antora/playbooks/site-vw.yml
index 45b7438..502f58f 100644
--- a/antora/playbooks/site-vw.yml
+++ b/antora/playbooks/site-vw.yml
@@ -8,7 +8,7 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/toc # toc
       branches: HEAD
 
 # core
diff --git a/site.yml b/site.yml
index 19878fe..722ff16 100644
--- a/site.yml
+++ b/site.yml
@@ -8,16 +8,20 @@ content:
 
 # antora
     - url: .
+      start_path: antora/components/toc # toc
+      branches: HEAD
+
+    - url: .
       start_path: antora/components/core # core
       branches: HEAD
     - url: .
-      start_path: antora/components/extensions # other
+      start_path: antora/components/extensions # extensions
       branches: HEAD
     - url: .
-      start_path: antora/components/incubator # other
+      start_path: antora/components/incubator # incubator
       branches: HEAD
     - url: .
-      start_path: antora/components/legacy # other
+      start_path: antora/components/legacy # legacy
       branches: HEAD
     - url: .
       start_path: antora/components/refguide # refguide
@@ -29,9 +33,6 @@ content:
       start_path: antora/components/testing # testing
       branches: HEAD
     - url: .
-      start_path: antora/components/toc # toc
-      branches: HEAD
-    - url: .
       start_path: antora/components/userguide # userguide
       branches: HEAD
 
@@ -110,58 +111,59 @@ content:
 
 # starters
     - url: .
-      start_path: starters/src/main/doc
+      start_path: starters/src/main/doc # toc
       branches: HEAD
 
 # incubator
     - url: .
-      start_path: incubator/core/model/src/main/doc # other
+      start_path: incubator/core/model/src/main/doc # incubator
       branches: HEAD
     - url: .
-      start_path: incubator/core/microprofile/src/main/doc # other
+      start_path: incubator/core/microprofile/src/main/doc # incubator
       branches: HEAD
 
 # legacy
     - url: .
-      start_path: legacy/core/applib/src/main/doc # other
+      start_path: legacy/core/applib/src/main/doc # legacy
       branches: HEAD
     - url: .
-      start_path: legacy/core/commons/src/main/doc # other
+      start_path: legacy/core/commons/src/main/doc # legacy
       branches: HEAD
     - url: .
-      start_path: legacy/core/runtime/src/main/doc # other
+      start_path: legacy/core/runtime/src/main/doc # legacy
       branches: HEAD
     - url: .
-      start_path: legacy/vro/restclient/src/main/doc # other
+      start_path: legacy/vro/restclient/src/main/doc # legacy
       branches: HEAD
 
 # extensions
     - url: .
-      start_path: extensions/core/spring/src/main/doc # other
+      start_path: extensions/core/spring/src/main/doc # extensions
       branches: HEAD
     - url: .
-      start_path: extensions/persistence/h2console/src/main/doc # other
+      start_path: extensions/persistence/h2console/src/main/doc # extensions
       branches: HEAD
     - url: .
-      start_path: extensions/persistence/hsqldbmgr/src/main/doc # other
+      start_path: extensions/persistence/hsqldbmgr/src/main/doc # extensions
       branches: HEAD
+
     - url: .
-      start_path: extensions/security/secman/src/main/doc # security secman
+      start_path: extensions/security/secman/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/api/src/main/doc # security secman
+      start_path: extensions/security/secman/api/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # security secman
+      start_path: extensions/security/secman/encryption-jbcrypt/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/model/src/main/doc # security secman
+      start_path: extensions/security/secman/model/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/persistence-jdo/src/main/doc # security secman
+      start_path: extensions/security/secman/pjdo/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/shiro-realm/src/main/doc # security secman
+      start_path: extensions/security/secman/shiro-realm/src/main/doc # security
       branches: HEAD
     - url: .
       start_path: extensions/security/shiro-realm-ldap/src/main/doc # security
@@ -190,7 +192,7 @@ content:
 
 # mavendeps
     - url: .
-      start_path: mavendeps/src/main/doc
+      start_path: mavendeps/src/main/doc # toc
       branches: HEAD
 
 


[isis] 19/25: ISIS-2072: updates site-core.yml, fix url ref

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 a3819c87369ddfdca45b198b097c4198375a4709
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 16 17:11:31 2019 +0000

    ISIS-2072: updates site-core.yml, fix url ref
---
 antora/playbooks/site-core.yml | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/antora/playbooks/site-core.yml b/antora/playbooks/site-core.yml
index 3759e2a..f2a3024 100644
--- a/antora/playbooks/site-core.yml
+++ b/antora/playbooks/site-core.yml
@@ -7,42 +7,42 @@ content:
   sources:
 
 # antora
-    - url: .
+    - url: ../..
       start_path: antora/components/toc # toc
       branches: HEAD
 
-    - url: .
+    - url: ../..
       start_path: antora/components/core # core
       branches: HEAD
 
 # core
-    - url: .
+    - url: ../..
       start_path: core/codegen-bytebuddy/src/main/doc # core
       branches: HEAD
-    - url: .
+    - url: ../..
       start_path: core/commons/src/main/doc # core
       branches: HEAD
-    - url: .
+    - url: ../..
       start_path: core/detached-tests/src/main/doc # core
       branches: HEAD
-    - url: .
+    - url: ../..
       start_path: core/metamodel/src/main/doc # core
       branches: HEAD
-    - url: .
+    - url: ../..
       start_path: core/runtime/src/main/doc # core
       branches: HEAD
-    - url: .
+    - url: ../..
       start_path: core/webboot-springboot/src/main/doc # core
       branches: HEAD
-    - url: .
+    - url: ../..
       start_path: core/runtime-services/src/main/doc # core
       branches: HEAD
-    - url: .
+    - url: ../..
       start_path: core/webapp/src/main/doc # core
       branches: HEAD
 
 # examples
-    - url: .
+    - url: ../..
       start_path: examples/smoketests/src/main/doc # core
       branches: HEAD
 


[isis] 11/25: ISIS-2062: more messing about with scripts

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 ae6c7769ab5f672b47f9552ceeecd5cb20188e48
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:34:08 2019 +0000

    ISIS-2062: more messing about with scripts
---
 scripts/ci/_adoc-antora.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
index 43d1334..263a696 100644
--- a/scripts/ci/_adoc-antora.sh
+++ b/scripts/ci/_adoc-antora.sh
@@ -39,5 +39,6 @@ if [ -z "$ANTORA_CMD" ]; then
 fi
 
 echo "running antora ..."
+echo "$ANTORA_CMD --stacktrace $PLAYBOOK"
 $ANTORA_CMD --stacktrace $PLAYBOOK
 


[isis] 01/25: ISIS-2062: updates scripts to generate 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 4a4bb5f5e799414ea13f089a2f292f67137e4315
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 17:26:34 2019 +0000

    ISIS-2062: updates scripts to generate docs
---
 adoc-gen.sh                                        |  8 +++++
 scripts/ci/_adoc-copy-examples.sh                  | 16 +++++++++
 scripts/ci/{build-site.sh => _adoc-gen-config.sh}  | 29 +--------------
 ...{print-environment.sh => _print-environment.sh} |  0
 scripts/ci/build-core.sh                           |  2 +-
 scripts/ci/build-demo-app.sh                       |  2 +-
 scripts/ci/build-site.sh                           | 42 ++++++----------------
 scripts/ci/build-smoketests.sh                     |  2 +-
 8 files changed, 38 insertions(+), 63 deletions(-)

diff --git a/adoc-gen.sh b/adoc-gen.sh
new file mode 100644
index 0000000..5da5cf2
--- /dev/null
+++ b/adoc-gen.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+sh scripts/ci/_adoc-copy-examples.sh
+sh scripts/ci/_adoc-gen-config.sh
+
+echo
+echo
+
+git status --porcelain
diff --git a/scripts/ci/_adoc-copy-examples.sh b/scripts/ci/_adoc-copy-examples.sh
new file mode 100644
index 0000000..33ed8b6
--- /dev/null
+++ b/scripts/ci/_adoc-copy-examples.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -e
+
+SCRIPT_DIR=$( dirname "$0" )
+if [ -z "$PROJECT_ROOT_PATH" ]; then
+  PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
+fi
+
+
+
+echo "doc gen: copying over examples ..."
+for examples_sh in $(find $PROJECT_ROOT_PATH -name examples.sh -print)
+do
+  echo $examples_sh
+  sh $examples_sh
+done
diff --git a/scripts/ci/build-site.sh b/scripts/ci/_adoc-gen-config.sh
similarity index 65%
copy from scripts/ci/build-site.sh
copy to scripts/ci/_adoc-gen-config.sh
index 353dc5f..b741440 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/_adoc-gen-config.sh
@@ -18,18 +18,14 @@ if [ -z "$REVISION" ]; then
 fi
 
 
-SITE_CONFIG=$1
 
 
 ##
 ## run groovy
 ##
-GROOVY_CMD=`command -v groovy`
-
-bash $SCRIPT_DIR/print-environment.sh "build-site"
+GROOVY_CMD=$(command -v groovy)
 
 echo ""
-echo "\$SITE_CONFIG: ${SITE_CONFIG}"
 echo "\$GROOVY_CMD : ${GROOVY_CMD}"
 echo ""
  
@@ -49,26 +45,3 @@ else
 fi
 
 
-##
-## copy over examples
-##
-echo "copying over examples ..."
-for examples_sh in $(find $PROJECT_ROOT_PATH -name examples.sh -print)
-do
-  echo $examples_sh
-  sh $examples_sh
-done
-
-
-##
-## run antora
-##
-echo "running antora ..."
-if [ -z "$ANTORA_CMD" ]; then
-  ANTORA_CMD=$(npm bin)/antora
-fi
-
-$ANTORA_CMD --stacktrace $SITE_CONFIG
-
-# add a marker, that tells github not to use jekyll on the github pages folder
-touch ${PROJECT_ROOT_PATH}/antora/target/site/.nojekyll
diff --git a/scripts/ci/print-environment.sh b/scripts/ci/_print-environment.sh
similarity index 100%
rename from scripts/ci/print-environment.sh
rename to scripts/ci/_print-environment.sh
diff --git a/scripts/ci/build-core.sh b/scripts/ci/build-core.sh
index 193b4bc..15bfaca 100644
--- a/scripts/ci/build-core.sh
+++ b/scripts/ci/build-core.sh
@@ -23,7 +23,7 @@ if [ -z "$SETTINGS_XML" ]; then
   SETTINGS_XML=$PROJECT_ROOT_PATH/.m2/settings.xml
 fi
 
-sh $SCRIPT_DIR/print-environment.sh "build-core"
+sh $SCRIPT_DIR/_print-environment.sh "build-core"
 
 if [ ! -z "$REVISION" ]; then
 
diff --git a/scripts/ci/build-demo-app.sh b/scripts/ci/build-demo-app.sh
index 4cc2438..5b2dcc2 100644
--- a/scripts/ci/build-demo-app.sh
+++ b/scripts/ci/build-demo-app.sh
@@ -20,7 +20,7 @@ if [ -z "$MVN_STAGES" ]; then
   MVN_STAGES="clean install"
 fi
 
-sh $SCRIPT_DIR/print-environment.sh "build-demo-app"
+sh $SCRIPT_DIR/_print-environment.sh "build-demo-app"
 
 export FLAVOR=$1
 export ISIS_VERSION=$REVISION
diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index 353dc5f..3fbcd8a 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -20,44 +20,22 @@ fi
 
 SITE_CONFIG=$1
 
+bash $SCRIPT_DIR/_print-environment.sh "build-site"
 
-##
-## run groovy
-##
-GROOVY_CMD=`command -v groovy`
+bash $SCRIPT_DIR/_adoc-copy-examples.sh
+bash $SCRIPT_DIR/_adoc-gen-config.sh
 
-bash $SCRIPT_DIR/print-environment.sh "build-site"
 
-echo ""
-echo "\$SITE_CONFIG: ${SITE_CONFIG}"
-echo "\$GROOVY_CMD : ${GROOVY_CMD}"
-echo ""
- 
-# for now meant to run with nightly builds only 
-if [ -z "${GROOVY_CMD}" ]; then
-  echo "doc gen: no groovy, skipping"
-else
-  if [ ! -f "$PROJECT_ROOT_PATH/core/config/target/classes/META-INF/spring-configuration-metadata.json" ]; then
-    echo "doc gen: no spring-configuration-metadata.json to parse: skipping"
-  else
-    # generate automated site content (adoc files)
-    echo "doc gen: generating config .adoc from Spring metadata ..."
-    ${GROOVY_CMD} $SCRIPT_DIR/../generateConfigDocs.groovy \
-      -f $PROJECT_ROOT_PATH/core/config/target/classes/META-INF/spring-configuration-metadata.json \
-      -o $PROJECT_ROOT_PATH/core/config/src/main/doc/modules/config/examples/generated
-  fi
+##
+## check if anything had not been sync'd
+##
+WC=$(git status --porcelain | wc -l)
+if [ "$WC" -ne "0" ]; then
+  echo "Some examples are out of date; run sync-examples.sh and commit, then try again" >&2
+  exit 1
 fi
 
 
-##
-## copy over examples
-##
-echo "copying over examples ..."
-for examples_sh in $(find $PROJECT_ROOT_PATH -name examples.sh -print)
-do
-  echo $examples_sh
-  sh $examples_sh
-done
 
 
 ##
diff --git a/scripts/ci/build-smoketests.sh b/scripts/ci/build-smoketests.sh
index 2fba972..392a82e 100644
--- a/scripts/ci/build-smoketests.sh
+++ b/scripts/ci/build-smoketests.sh
@@ -20,7 +20,7 @@ if [ -z "$MVN_STAGES" ]; then
   MVN_STAGES="clean install"
 fi
 
-sh $SCRIPT_DIR/print-environment.sh "build-smoketests"
+sh $SCRIPT_DIR/_print-environment.sh "build-smoketests"
 
 #
 # update version (but just for the modules we need to build)


[isis] 03/25: ISIS-2062: also delete destination dir for generated config .adocs

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 58e1b8c362661622064758a16e2fb9ca47f0f409
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 17:35:07 2019 +0000

    ISIS-2062: also delete destination dir for generated config .adocs
---
 scripts/ci/_adoc-gen-config.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/scripts/ci/_adoc-gen-config.sh b/scripts/ci/_adoc-gen-config.sh
index b741440..3699650 100644
--- a/scripts/ci/_adoc-gen-config.sh
+++ b/scripts/ci/_adoc-gen-config.sh
@@ -38,6 +38,9 @@ else
   else
     # generate automated site content (adoc files)
     echo "doc gen: generating config .adoc from Spring metadata ..."
+
+    rm -rf $PROJECT_ROOT_PATH/core/config/src/main/doc/modules/config/examples/generated
+
     ${GROOVY_CMD} $SCRIPT_DIR/../generateConfigDocs.groovy \
       -f $PROJECT_ROOT_PATH/core/config/target/classes/META-INF/spring-configuration-metadata.json \
       -o $PROJECT_ROOT_PATH/core/config/src/main/doc/modules/config/examples/generated


[isis] 18/25: ISIS-2062: runs dos2unix against all generated config .adoc files

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 e86bbb2e8aedd2be4d825fc3935b324e3dcca26c
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 16 17:09:21 2019 +0000

    ISIS-2062: runs dos2unix against all generated config .adoc files
---
 scripts/ci/_adoc-gen-config.sh | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/scripts/ci/_adoc-gen-config.sh b/scripts/ci/_adoc-gen-config.sh
index 3699650..14e1a6f 100644
--- a/scripts/ci/_adoc-gen-config.sh
+++ b/scripts/ci/_adoc-gen-config.sh
@@ -44,6 +44,16 @@ else
     ${GROOVY_CMD} $SCRIPT_DIR/../generateConfigDocs.groovy \
       -f $PROJECT_ROOT_PATH/core/config/target/classes/META-INF/spring-configuration-metadata.json \
       -o $PROJECT_ROOT_PATH/core/config/src/main/doc/modules/config/examples/generated
+
+    if [ ! -z "dos2unix" ]; then
+      for FILE in $PROJECT_ROOT_PATH/core/config/src/main/doc/modules/config/examples/generated/*
+      do
+        dos2unix $FILE
+      done
+      echo
+      echo
+      echo
+    fi
   fi
 fi
 


[isis] 02/25: ISIS-2062: examples.sh now rm -rf their target first

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 18251f3a8af0773064bcf4d3735f76ef4a30fd53
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 17:32:39 2019 +0000

    ISIS-2062: examples.sh now rm -rf their target first
---
 .../src/main/doc/modules/applib-ant/examples.sh    | 12 +++---
 .../src/main/doc/modules/applib-cm/examples.sh     | 48 ++++------------------
 .../src/main/doc/modules/applib-svc/examples.sh    | 12 +++---
 3 files changed, 21 insertions(+), 51 deletions(-)

diff --git a/core/applib/src/main/doc/modules/applib-ant/examples.sh b/core/applib/src/main/doc/modules/applib-ant/examples.sh
index 250b854..4f43ba3 100644
--- a/core/applib/src/main/doc/modules/applib-ant/examples.sh
+++ b/core/applib/src/main/doc/modules/applib-ant/examples.sh
@@ -2,13 +2,15 @@
 
 SRC_MAIN_JAVA=../../../java
 SCRIPT_DIR=$( dirname "$0" )
-cd $SCRIPT_DIR
+cd $SCRIPT_DIR || exit 1
 
 
 
 SRC_APPLIB=$SRC_MAIN_JAVA/org/apache/isis/applib
 
-# annotations
-mkdir -p examples/annotation
-cp -R $SRC_APPLIB/annotation/* examples/annotation
-
+for dir in annotation
+do
+  rm -rf examples/$dir
+  mkdir -p examples/$dir
+  cp -R $SRC_APPLIB/$dir/* examples/$dir
+done
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples.sh b/core/applib/src/main/doc/modules/applib-cm/examples.sh
index 50353df..9d7f3db 100644
--- a/core/applib/src/main/doc/modules/applib-cm/examples.sh
+++ b/core/applib/src/main/doc/modules/applib-cm/examples.sh
@@ -2,49 +2,15 @@
 
 SRC_MAIN_JAVA=../../../java
 SCRIPT_DIR=$( dirname "$0" )
-cd $SCRIPT_DIR
+cd $SCRIPT_DIR || exit 1
 
 
 
 SRC_APPLIB=$SRC_MAIN_JAVA/org/apache/isis/applib
 
-# clock
-mkdir -p examples/clock
-cp -R $SRC_APPLIB/clock/* examples/clock
-
-# domain
-mkdir -p examples/domain
-cp -R $SRC_APPLIB/domain/* examples/domain
-
-# events
-mkdir -p examples/events
-cp -R $SRC_APPLIB/events/* examples/events
-
-# layout
-mkdir -p examples/layout
-cp -R $SRC_APPLIB/layout/* examples/layout
-
-# mixins
-mkdir -p examples/mixins
-cp -R $SRC_APPLIB/mixins/* examples/mixins
-
-# security
-mkdir -p examples/security
-cp -R $SRC_APPLIB/security/* examples/security
-
-# spec
-mkdir -p examples/spec
-cp -R $SRC_APPLIB/spec/* examples/spec
-
-# tree
-mkdir -p examples/tree
-cp -R $SRC_APPLIB/tree/* examples/tree
-
-# util
-mkdir -p examples/util
-cp -R $SRC_APPLIB/util/* examples/util
-
-# value
-mkdir -p examples/value
-cp -R $SRC_APPLIB/value/* examples/value
-
+for dir in clock domain events layout mixins security spec tree util value
+do
+  rm -rf examples/$dir
+  mkdir -p examples/$dir
+  cp -R $SRC_APPLIB/$dir/* examples/$dir
+done
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples.sh b/core/applib/src/main/doc/modules/applib-svc/examples.sh
index e620e62..b4c97a8 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples.sh
+++ b/core/applib/src/main/doc/modules/applib-svc/examples.sh
@@ -2,13 +2,15 @@
 
 SRC_MAIN_JAVA=../../../java
 SCRIPT_DIR=$( dirname "$0" )
-cd $SCRIPT_DIR
+cd $SCRIPT_DIR || exit 1
 
 
 
 SRC_APPLIB=$SRC_MAIN_JAVA/org/apache/isis/applib
 
-
-# services
-mkdir -p examples/services
-cp -R $SRC_APPLIB/services/* examples/services
\ No newline at end of file
+for dir in services
+do
+  rm -rf examples/$dir
+  mkdir -p examples/$dir
+  cp -R $SRC_APPLIB/$dir/* examples/$dir
+done


[isis] 16/25: ISIS-2062: renames persistence-jdo to pjdo

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 8427a4349f078e5446215d5f59b2925e69738335
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 16 16:55:46 2019 +0000

    ISIS-2062: renames persistence-jdo to pjdo
---
 antora/components/toc/modules/ROOT/pages/about.adoc                   | 2 +-
 antora/components/toc/modules/ROOT/pages/components.adoc              | 2 +-
 antora/components/toc/modules/ROOT/partials/module-nav.adoc           | 2 +-
 antora/components/userguide/modules/ROOT/pages/about.adoc             | 2 +-
 .../modules/btb/pages/deployment/externalized-configuration.adoc      | 2 +-
 .../modules/fun/pages/programming-model/domain-entities.adoc          | 2 +-
 antora/playbooks/{site-odn.yml => site-pjdo.yml}                      | 4 ++--
 core/persistence/jdo/src/main/doc/antora.yml                          | 2 +-
 .../jdo/src/main/doc/modules/ROOT/pages/configuring/properties.adoc   | 4 ++--
 core/persistence/jdo/src/main/doc/modules/ROOT/pages/db-schemas.adoc  | 2 +-
 .../doc/modules/ROOT/pages/hints-and-tips/diagnosing-n-plus-1.adoc    | 2 +-
 .../ROOT/pages/hints-and-tips/typesafe-queries-and-fetchgroups.adoc   | 2 +-
 .../pages/presentation-layer/ContentNegotiationService.adoc           | 2 +-
 site.yml                                                              | 2 +-
 14 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/antora/components/toc/modules/ROOT/pages/about.adoc b/antora/components/toc/modules/ROOT/pages/about.adoc
index d7c29c7..13b8e05 100644
--- a/antora/components/toc/modules/ROOT/pages/about.adoc
+++ b/antora/components/toc/modules/ROOT/pages/about.adoc
@@ -49,7 +49,7 @@ include::_attributes.adoc[]
 
 * xref:vw:ROOT:about.adoc[Wicket UI]
 * xref:vro:ROOT:about.adoc[Restful Objects (REST API)]
-* xref:odn:ROOT:about.adoc[DataNucleus Object Store]
+* xref:pjdo:ROOT:about.adoc[DataNucleus Object Store]
 
 
 
diff --git a/antora/components/toc/modules/ROOT/pages/components.adoc b/antora/components/toc/modules/ROOT/pages/components.adoc
index 2ec43fc..db0769f 100644
--- a/antora/components/toc/modules/ROOT/pages/components.adoc
+++ b/antora/components/toc/modules/ROOT/pages/components.adoc
@@ -13,5 +13,5 @@ This page provides user/config guides for each of the main components of the fra
 
 == Persistence
 
-*  xref:odn:ROOT:about.adoc[DataNucleus Object Store]
+*  xref:pjdo:ROOT:about.adoc[DataNucleus Object Store]
 
diff --git a/antora/components/toc/modules/ROOT/partials/module-nav.adoc b/antora/components/toc/modules/ROOT/partials/module-nav.adoc
index 4cc59a3..da62376 100644
--- a/antora/components/toc/modules/ROOT/partials/module-nav.adoc
+++ b/antora/components/toc/modules/ROOT/partials/module-nav.adoc
@@ -28,7 +28,7 @@
 
 ** xref:vw:ROOT:about.adoc[Wicket UI]
 ** xref:vro:ROOT:about.adoc[Restful Objects (REST API)]
-** xref:odn:ROOT:about.adoc[DataNucleus Object Store]
+** xref:pjdo:ROOT:about.adoc[DataNucleus Object Store]
 
 
 * Catalogs
diff --git a/antora/components/userguide/modules/ROOT/pages/about.adoc b/antora/components/userguide/modules/ROOT/pages/about.adoc
index ed9ccb3..9429a69 100644
--- a/antora/components/userguide/modules/ROOT/pages/about.adoc
+++ b/antora/components/userguide/modules/ROOT/pages/about.adoc
@@ -18,7 +18,7 @@ There are a number of other 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:pjdo:ROOT:about.adoc[DataNucleus object store]
 
 
 
diff --git a/antora/components/userguide/modules/btb/pages/deployment/externalized-configuration.adoc b/antora/components/userguide/modules/btb/pages/deployment/externalized-configuration.adoc
index 0ac4ecd..1a2d8c8 100644
--- a/antora/components/userguide/modules/btb/pages/deployment/externalized-configuration.adoc
+++ b/antora/components/userguide/modules/btb/pages/deployment/externalized-configuration.adoc
@@ -256,4 +256,4 @@ The cost of these proxies can be mitigated using:
 
 == Using a JNDI Datasource
 
-See the guidance in the xref:odn:ROOT:configuring.adoc#using-jndi-data-source[configuring datanucleus] section.
\ No newline at end of file
+See the guidance in the xref:pjdo:ROOT:configuring.adoc#using-jndi-data-source[configuring datanucleus] section.
\ No newline at end of file
diff --git a/antora/components/userguide/modules/fun/pages/programming-model/domain-entities.adoc b/antora/components/userguide/modules/fun/pages/programming-model/domain-entities.adoc
index d274881..44984a1 100644
--- a/antora/components/userguide/modules/fun/pages/programming-model/domain-entities.adoc
+++ b/antora/components/userguide/modules/fun/pages/programming-model/domain-entities.adoc
@@ -138,6 +138,6 @@ RepositoryService repositoryService;
 
 [TIP]
 ====
-See the xref:odn:ROOT:about.adoc[DataNucleus objectstore guide] for further information on annotating domain entities.
+See the xref:pjdo:ROOT:about.adoc[DataNucleus objectstore guide] for further information on annotating domain entities.
 ====
 
diff --git a/antora/playbooks/site-odn.yml b/antora/playbooks/site-pjdo.yml
similarity index 89%
rename from antora/playbooks/site-odn.yml
rename to antora/playbooks/site-pjdo.yml
index c9c1a47..1b9813a 100644
--- a/antora/playbooks/site-odn.yml
+++ b/antora/playbooks/site-pjdo.yml
@@ -8,12 +8,12 @@ content:
 
 # antora
     - url: .
-      start_path: antora/components/toc
+      start_path: antora/components/toc # toc
       branches: HEAD
 
 # core
     - url: .
-      start_path: core/persistence/jdo/src/main/doc # odn
+      start_path: core/persistence/jdo/src/main/doc # pjdo
       branches: HEAD
 
 
diff --git a/core/persistence/jdo/src/main/doc/antora.yml b/core/persistence/jdo/src/main/doc/antora.yml
index b16cf5d..55fd0a3 100644
--- a/core/persistence/jdo/src/main/doc/antora.yml
+++ b/core/persistence/jdo/src/main/doc/antora.yml
@@ -1,4 +1,4 @@
-name: odn
+name: pjdo
 title: "DataNucleus ObjectStore"
 version: master
 start_page: ROOT:about.adoc
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/properties.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/properties.adoc
index 7fffc4b..302782e 100644
--- a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/properties.adoc
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/properties.adoc
@@ -25,7 +25,7 @@ These configuration properties are typically stored in `WEB-INF/persistor_datanu
 (`false`)
 |Enables bulk load of standalone collections.
 
-Further xref:odn:ROOT:configuring.adoc#bulk-load[discussion below].
+Further xref:pjdo:ROOT:configuring.adoc#bulk-load[discussion below].
 
 |`isis.persistor.` +
 `datanucleus.` +
@@ -93,7 +93,7 @@ Only intended for "emergency use" as a workaround while pending fix/patch to Apa
 `datanucleus.persistenceByReachabilityAtCommit`
 |`false`
 |We recommend this setting is disabled.  +
-Further xref:odn:ROOT:configuring.adoc#disabling-persistence-by-reachability[discussion below].
+Further xref:pjdo:ROOT:configuring.adoc#disabling-persistence-by-reachability[discussion below].
 
 |===
 
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/db-schemas.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/db-schemas.adoc
index b3717a0..522708e 100644
--- a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/db-schemas.adoc
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/db-schemas.adoc
@@ -51,7 +51,7 @@ CREATE TABLE isisaudit."AuditEntry" (
 [TIP]
 ====
 If for some reason you don't want to use schemas (though we strongly recommend that you do), then note that you can override the `@PersistenceCapable` annotation by providing XML metadata (the `mappings.jdo` file).
-See the section on xref:odn:ROOT:configuring.adoc[configuring DataNucleus Overriding Annotations] for more details.
+See the section on xref:pjdo:ROOT:configuring.adoc[configuring DataNucleus Overriding Annotations] for more details.
 ====
 
 
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/diagnosing-n-plus-1.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/diagnosing-n-plus-1.adoc
index af7805c..520e742 100644
--- a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/diagnosing-n-plus-1.adoc
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/diagnosing-n-plus-1.adoc
@@ -12,4 +12,4 @@ The "Variables" pane will tell you which field(s) are being loaded, and the stac
 
 For example, it may be that an object is being loaded in a table and the initial query did not eagerly load that field.
 In such a case, consider using fetch groups in the initial repository query to bring the required data into memory with just one SQL call.
-See xref:odn:ROOT:hints-and-tips.adoc#typesafe-queries-and-fetchgroups[this hint/tip] for further details.
\ No newline at end of file
+See xref:pjdo:ROOT:hints-and-tips.adoc#typesafe-queries-and-fetchgroups[this hint/tip] for further details.
\ No newline at end of file
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/typesafe-queries-and-fetchgroups.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/typesafe-queries-and-fetchgroups.adoc
index 1448b0a..f112599 100644
--- a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/typesafe-queries-and-fetchgroups.adoc
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/hints-and-tips/typesafe-queries-and-fetchgroups.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 
 Fetch groups provide a means to hint to DataNucleus that it should perform a SQL join when querying.
-A common use case is to avoid the xref:odn:ROOT:hints-and-tips.adoc#diagnosing-n-plus-1[n+1] issue.
+A common use case is to avoid the xref:pjdo:ROOT:hints-and-tips.adoc#diagnosing-n-plus-1[n+1] issue.
 
 (So far as I could ascertain) it isn't possible to specify fetch group hints using JDOQL, but it is possible to specify them using the programmatic API or using typesafe queries.
 
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
index f54bafe..a8d085b 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
@@ -16,7 +16,7 @@ Instead you need to create some sort of stable facade over your domain entities,
 +
 If the underlying entities change, then care must be taken to ensure that structure of the view model nevertheless is unchanged.
 
-* a second option is to solve the problem at the persistence layer, but defining a (SQL) view in the database and then xref:odn:ROOT:jdo-mappings.adoc#mapping-to-a-view[mapping this] to a (read-only) entity.  Again this is surfaced by the RO viewer.  +
+* a second option is to solve the problem at the persistence layer, but defining a (SQL) view in the database and then xref:pjdo:ROOT:jdo-mappings.adoc#mapping-to-a-view[mapping this] to a (read-only) entity.  Again this is surfaced by the RO viewer.  +
 +
 If the underlying tables change (as the result of a change in their corresponding domain entities) then once more the view must be refactored so that it still presents the same structure.
 
diff --git a/site.yml b/site.yml
index 9f191b6..19878fe 100644
--- a/site.yml
+++ b/site.yml
@@ -55,7 +55,7 @@ content:
       start_path: core/metamodel/src/main/doc # core
       branches: HEAD
     - url: .
-      start_path: core/persistence/jdo/src/main/doc # odn
+      start_path: core/persistence/jdo/src/main/doc # pjdo
       branches: HEAD
     - url: .
       start_path: core/runtime/src/main/doc # core


[isis] 21/25: ISIS-2072: experiment, site-core.yml in root

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 151096f21a94d798623d3a2f46c89260c31bb0a1
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 16 17:13:27 2019 +0000

    ISIS-2072: experiment, site-core.yml in root
---
 site-core.yml | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)

diff --git a/site-core.yml b/site-core.yml
new file mode 100644
index 0000000..3759e2a
--- /dev/null
+++ b/site-core.yml
@@ -0,0 +1,73 @@
+site:
+  title: Apache Isis
+  url: https://isis.apache.org/
+  start_page: toc:ROOT:about.adoc
+
+content:
+  sources:
+
+# antora
+    - url: .
+      start_path: antora/components/toc # toc
+      branches: HEAD
+
+    - url: .
+      start_path: antora/components/core # core
+      branches: HEAD
+
+# core
+    - url: .
+      start_path: core/codegen-bytebuddy/src/main/doc # core
+      branches: HEAD
+    - url: .
+      start_path: core/commons/src/main/doc # core
+      branches: HEAD
+    - url: .
+      start_path: core/detached-tests/src/main/doc # core
+      branches: HEAD
+    - url: .
+      start_path: core/metamodel/src/main/doc # core
+      branches: HEAD
+    - url: .
+      start_path: core/runtime/src/main/doc # core
+      branches: HEAD
+    - url: .
+      start_path: core/webboot-springboot/src/main/doc # core
+      branches: HEAD
+    - url: .
+      start_path: core/runtime-services/src/main/doc # core
+      branches: HEAD
+    - url: .
+      start_path: core/webapp/src/main/doc # core
+      branches: HEAD
+
+# examples
+    - url: .
+      start_path: examples/smoketests/src/main/doc # core
+      branches: HEAD
+
+ui:
+  bundle:
+    url: ../isis-antora/build/ui-bundle.zip
+#    url: https://github.com/apache/isis-antora/blob/master/build/ui-bundle.zip?raw=true
+    snapshot: true
+  supplemental_files: antora/supplemental-ui
+
+asciidoc:
+  extensions:
+    - asciidoctor-plantuml
+    - ./antora/lib/lorem
+    - ./antora/lib/jira-issue
+    - ./antora/lib/powershell
+  attributes:
+    experimental: ""
+    idprefix: ""
+    idseparator: "-"
+    plantuml-server-url: "http://www.plantuml.com/plantuml"
+    isiscurr: "2.0.0-M2"
+    isisnext: "2.0.0-M3"
+    isisnextafter: "2.0.0-M4"
+    :isisdevafter: "2.0.0-M4-SNAPSHOT"
+
+output:
+  dir: antora/target/site


[isis] 05/25: ISIS-2062: commits the copied over example files.

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 825bc36113c05efb781d7fcbf87b54cce75ae0b3
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 17:40:15 2019 +0000

    ISIS-2062: commits the copied over example files.
    
    This is to ensure that Antora can be run against remote URLs as well as local URLs (author mode).
---
 .../doc/modules/applib-ant/examples/.gitignore     |   2 -
 .../applib-ant/examples/annotation/Action.java     | 224 +++++++
 .../examples/annotation/ActionLayout.java          | 158 +++++
 .../applib-ant/examples/annotation/Auditing.java   |  46 ++
 .../examples/annotation/BookmarkPolicy.java        |  45 ++
 .../applib-ant/examples/annotation/Bounding.java   |  28 +
 .../applib-ant/examples/annotation/Collection.java | 110 ++++
 .../examples/annotation/CollectionLayout.java      | 135 ++++
 .../examples/annotation/CommandExecuteIn.java      |  79 +++
 .../examples/annotation/CommandPersistence.java    |  43 ++
 .../examples/annotation/CommandReification.java    |  52 ++
 .../applib-ant/examples/annotation/Constants.java  |  27 +
 .../examples/annotation/Contributed.java           |  55 ++
 .../applib-ant/examples/annotation/Defaulted.java  |  83 +++
 .../examples/annotation/DomainObject.java          | 329 ++++++++++
 .../examples/annotation/DomainObjectLayout.java    | 158 +++++
 .../examples/annotation/DomainService.java         |  95 +++
 .../examples/annotation/DomainServiceLayout.java   |  81 +++
 .../applib-ant/examples/annotation/Editing.java    |  47 ++
 .../examples/annotation/EqualByContent.java        |  64 ++
 .../applib-ant/examples/annotation/Facets.java     |  60 ++
 .../applib-ant/examples/annotation/HomePage.java   |  46 ++
 .../examples/annotation/LabelPosition.java         |  48 ++
 .../examples/annotation/MemberOrder.java           |  59 ++
 .../examples/annotation/MementoSerialization.java  |  43 ++
 .../applib-ant/examples/annotation/MinLength.java  |  37 ++
 .../applib-ant/examples/annotation/Mixin.java      |  68 ++
 .../applib-ant/examples/annotation/Module.java     |  60 ++
 .../applib-ant/examples/annotation/Nature.java     | 112 ++++
 .../examples/annotation/NatureOfService.java       | 122 ++++
 .../applib-ant/examples/annotation/Navigable.java  |  44 ++
 .../examples/annotation/Optionality.java           |  62 ++
 .../examples/annotation/OrderPrecedence.java       |  58 ++
 .../applib-ant/examples/annotation/Parameter.java  | 107 ++++
 .../examples/annotation/ParameterLayout.java       | 104 +++
 .../examples/annotation/Programmatic.java          |  51 ++
 .../applib-ant/examples/annotation/Projecting.java |  31 +
 .../examples/annotation/PromptStyle.java           |  91 +++
 .../applib-ant/examples/annotation/Property.java   | 261 ++++++++
 .../examples/annotation/PropertyLayout.java        | 143 +++++
 .../applib-ant/examples/annotation/Publishing.java |  46 ++
 .../examples/annotation/PublishingChangeKind.java  |  25 +
 .../applib-ant/examples/annotation/Redirect.java   |  49 ++
 .../applib-ant/examples/annotation/RenderDay.java  |  40 ++
 .../applib-ant/examples/annotation/Repainting.java |  40 ++
 .../applib-ant/examples/annotation/RestrictTo.java |  28 +
 .../examples/annotation/SemanticsOf.java           | 143 +++++
 .../applib-ant/examples/annotation/Title.java      |  57 ++
 .../applib-ant/examples/annotation/Value.java      | 103 +++
 .../applib-ant/examples/annotation/ViewModel.java  |  63 ++
 .../examples/annotation/ViewModelLayout.java       | 171 +++++
 .../applib-ant/examples/annotation/Where.java      | 172 +++++
 .../examples/annotation/package-info.java          |  23 +
 .../main/doc/modules/applib-cm/examples/.gitignore |   2 -
 .../modules/applib-cm/examples/clock/Clock.java    | 142 ++++
 .../applib-cm/examples/clock/package-info.java     |  42 ++
 .../examples/domain/DomainObjectList.java          | 179 ++++++
 .../events/ActionArgumentUsabilityEvent.java       |  68 ++
 .../events/ActionArgumentVisibilityEvent.java      |  67 ++
 .../events/domain/AbstractDomainEvent.java         | 346 ++++++++++
 .../examples/events/domain/ActionDomainEvent.java  | 215 +++++++
 .../events/domain/CollectionDomainEvent.java       | 139 ++++
 .../examples/events/domain/EventObjectBase.java    |  79 +++
 .../events/domain/PropertyDomainEvent.java         | 116 ++++
 .../events/lifecycle/AbstractLifecycleEvent.java   |  33 +
 .../events/lifecycle/ObjectCreatedEvent.java       |  58 ++
 .../events/lifecycle/ObjectLoadedEvent.java        |  60 ++
 .../events/lifecycle/ObjectPersistedEvent.java     |  60 ++
 .../events/lifecycle/ObjectPersistingEvent.java    |  59 ++
 .../events/lifecycle/ObjectRemovingEvent.java      |  60 ++
 .../events/lifecycle/ObjectUpdatedEvent.java       |  60 ++
 .../events/lifecycle/ObjectUpdatingEvent.java      |  60 ++
 .../examples/events/ui/AbstractUiEvent.java        |  60 ++
 .../examples/events/ui/CssClassUiEvent.java        |  87 +++
 .../applib-cm/examples/events/ui/IconUiEvent.java  |  93 +++
 .../examples/events/ui/LayoutUiEvent.java          |  92 +++
 .../applib-cm/examples/events/ui/TitleUiEvent.java | 121 ++++
 .../layout/component/ActionLayoutData.java         | 302 +++++++++
 .../layout/component/ActionLayoutDataOwner.java    |  26 +
 .../layout/component/CollectionLayoutData.java     | 275 ++++++++
 .../component/CollectionLayoutDataOwner.java       |  26 +
 .../layout/component/DomainObjectLayoutData.java   | 231 +++++++
 .../component/DomainObjectLayoutDataOwner.java     |  25 +
 .../examples/layout/component/FieldSet.java        | 206 ++++++
 .../examples/layout/component/FieldSetOwner.java   |  25 +
 .../examples/layout/component/HasBookmarking.java  |  29 +
 .../examples/layout/component/HasCssClass.java     |  27 +
 .../examples/layout/component/HasCssClassFa.java   |  35 +
 .../examples/layout/component/HasDescribedAs.java  |  29 +
 .../examples/layout/component/HasHidden.java       |  31 +
 .../examples/layout/component/HasNamed.java        |  34 +
 .../examples/layout/component/MemberRegion.java    |  33 +
 .../layout/component/MemberRegionOwner.java        |  23 +
 .../applib-cm/examples/layout/component/Owned.java |  23 +
 .../applib-cm/examples/layout/component/Owner.java |  24 +
 .../layout/component/PropertyLayoutData.java       | 314 +++++++++
 .../layout/component/ServiceActionLayoutData.java  | 248 +++++++
 .../component/ServiceActionLayoutDataOwner.java    |  26 +
 .../examples/layout/component/package-info.java    |  39 ++
 .../applib-cm/examples/layout/grid/Grid.java       |  95 +++
 .../examples/layout/grid/GridAbstract.java         | 208 ++++++
 .../layout/grid/bootstrap3/BS3ClearFix.java        |  26 +
 .../layout/grid/bootstrap3/BS3ClearFixHidden.java  |  49 ++
 .../layout/grid/bootstrap3/BS3ClearFixVisible.java |  73 +++
 .../examples/layout/grid/bootstrap3/BS3Col.java    | 281 ++++++++
 .../layout/grid/bootstrap3/BS3Element.java         |  35 +
 .../layout/grid/bootstrap3/BS3ElementAbstract.java |  50 ++
 .../examples/layout/grid/bootstrap3/BS3Grid.java   | 307 +++++++++
 .../examples/layout/grid/bootstrap3/BS3Row.java    | 140 ++++
 .../layout/grid/bootstrap3/BS3RowContent.java      |  80 +++
 .../layout/grid/bootstrap3/BS3RowContentOwner.java |  25 +
 .../layout/grid/bootstrap3/BS3RowOwner.java        |  28 +
 .../examples/layout/grid/bootstrap3/BS3Tab.java    | 177 +++++
 .../layout/grid/bootstrap3/BS3TabGroup.java        | 138 ++++
 .../layout/grid/bootstrap3/BS3TabGroupOwner.java   |  28 +
 .../layout/grid/bootstrap3/BS3TabOwner.java        |  28 +
 .../examples/layout/grid/bootstrap3/HasCssId.java  |  28 +
 .../examples/layout/grid/bootstrap3/Size.java      |  34 +
 .../examples/layout/grid/bootstrap3/SizeSpan.java  | 103 +++
 .../layout/grid/bootstrap3/WithinGrid.java         |  27 +
 .../layout/grid/bootstrap3/package-info.java       |  37 ++
 .../applib-cm/examples/layout/links/Link.java      |  93 +++
 .../examples/layout/links/package-info.java        |  38 ++
 .../applib-cm/examples/layout/menubars/Menu.java   |  28 +
 .../examples/layout/menubars/MenuBar.java          |  23 +
 .../examples/layout/menubars/MenuBars.java         |  43 ++
 .../examples/layout/menubars/MenuBarsAbstract.java |  69 ++
 .../examples/layout/menubars/MenuSection.java      |  30 +
 .../layout/menubars/bootstrap3/BS3Menu.java        | 111 ++++
 .../layout/menubars/bootstrap3/BS3MenuBar.java     |  61 ++
 .../layout/menubars/bootstrap3/BS3MenuBars.java    | 227 +++++++
 .../layout/menubars/bootstrap3/BS3MenuSection.java |  64 ++
 .../layout/menubars/bootstrap3/package-info.java   |  38 ++
 .../applib-cm/examples/layout/package-info.java    |  25 +
 .../applib-cm/examples/mixins/MixinConstants.java  |  32 +
 .../modules/applib-cm/examples/mixins/dto/Dto.java |  23 +
 .../examples/mixins/dto/DtoMappingHelper.java      |  78 +++
 .../examples/mixins/dto/Dto_downloadXml.java       |  79 +++
 .../examples/mixins/dto/Dto_downloadXsd.java       | 124 ++++
 .../examples/mixins/dto/package-info.java          |  28 +
 .../mixins/layout/Object_downloadLayoutXml.java    |  89 +++
 .../examples/mixins/layout/Object_openRestApi.java |  74 +++
 .../mixins/layout/Object_rebuildMetamodel.java     |  65 ++
 .../metamodel/Object_downloadMetaModelXml.java     | 107 ++++
 .../mixins/metamodel/Object_objectIdentifier.java  |  65 ++
 .../mixins/metamodel/Object_objectType.java        |  62 ++
 .../examples/mixins/timestamp/HoldsUpdatedAt.java  |  25 +
 .../examples/mixins/timestamp/HoldsUpdatedBy.java  |  25 +
 .../examples/mixins/timestamp/Timestampable.java   |  22 +
 .../examples/mixins/timestamp/package-info.java    |  25 +
 .../applib-cm/examples/security/RoleMemento.java   |  72 +++
 .../applib-cm/examples/security/UserMemento.java   | 161 +++++
 .../applib-cm/examples/security/package-info.java  |  36 ++
 .../examples/spec/AbstractSpecification.java       | 107 ++++
 .../examples/spec/AbstractSpecification2.java      | 112 ++++
 .../applib-cm/examples/spec/Specification.java     |  33 +
 .../applib-cm/examples/spec/Specification2.java    |  38 ++
 .../applib-cm/examples/spec/SpecificationAnd.java  |  64 ++
 .../applib-cm/examples/spec/SpecificationNot.java  |  60 ++
 .../applib-cm/examples/spec/SpecificationOr.java   |  68 ++
 .../applib-cm/examples/spec/package-info.java      |  39 ++
 .../applib-cm/examples/tree/LazyTreeNode.java      | 142 ++++
 .../applib-cm/examples/tree/TreeAdapter.java       |  52 ++
 .../modules/applib-cm/examples/tree/TreeNode.java  | 155 +++++
 .../tree/TreeNode_iteratorBreadthFirst.java        |  60 ++
 .../examples/tree/TreeNode_iteratorDepthFirst.java |  71 ++
 .../tree/TreeNode_iteratorHierarchyUp.java         |  53 ++
 .../modules/applib-cm/examples/tree/TreePath.java  |  60 ++
 .../applib-cm/examples/tree/TreePath_Default.java  |  90 +++
 .../modules/applib-cm/examples/tree/TreeState.java |  32 +
 .../applib-cm/examples/tree/TreeState_Default.java |  34 +
 .../doc/modules/applib-cm/examples/util/Enums.java |  87 +++
 .../modules/applib-cm/examples/util/Equality.java  |  75 +++
 .../modules/applib-cm/examples/util/Hashing.java   |  66 ++
 .../applib-cm/examples/util/JaxbAdapters.java      | 201 ++++++
 .../modules/applib-cm/examples/util/JaxbUtil.java  | 109 ++++
 .../examples/util/ObjectContract_Empty.java        |  94 +++
 .../examples/util/ObjectContract_Impl.java         | 104 +++
 .../examples/util/ObjectContract_Parser.java       | 179 ++++++
 .../applib-cm/examples/util/ObjectContracts.java   | 231 +++++++
 .../applib-cm/examples/util/ReasonBuffer.java      |  67 ++
 .../applib-cm/examples/util/ReasonBuffer2.java     | 227 +++++++
 .../modules/applib-cm/examples/util/Reasons.java   |  51 ++
 .../applib-cm/examples/util/TitleBuffer.java       | 467 ++++++++++++++
 .../examples/util/TitleBufferException.java        |  48 ++
 .../modules/applib-cm/examples/util/ToString.java  | 123 ++++
 .../applib-cm/examples/util/package-info.java      |  40 ++
 .../examples/util/schema/ChangesDtoUtils.java      | 101 +++
 .../examples/util/schema/CommandDtoUtils.java      | 149 +++++
 .../examples/util/schema/CommonDtoUtils.java       | 494 ++++++++++++++
 .../examples/util/schema/InteractionDtoUtils.java  | 461 +++++++++++++
 .../util/schema/MemberExecutionDtoUtils.java       | 119 ++++
 .../doc/modules/applib-cm/examples/value/Blob.java | 140 ++++
 .../applib-cm/examples/value/BlobClobFactory.java  | 151 +++++
 .../doc/modules/applib-cm/examples/value/Clob.java | 132 ++++
 .../modules/applib-cm/examples/value/Color.java    | 107 ++++
 .../modules/applib-cm/examples/value/Image.java    |  59 ++
 .../examples/value/LocalResourcePath.java          |  96 +++
 .../applib-cm/examples/value/Magnitude.java        |  60 ++
 .../modules/applib-cm/examples/value/Markup.java   |  76 +++
 .../modules/applib-cm/examples/value/Money.java    | 184 ++++++
 .../examples/value/NamedWithMimeType.java          |  32 +
 .../modules/applib-cm/examples/value/Password.java |  78 +++
 .../applib-cm/examples/value/Percentage.java       | 127 ++++
 .../applib-cm/examples/value/package-info.java     |  31 +
 .../doc/modules/applib-svc/examples/.gitignore     |   2 -
 .../applib-svc/examples/services/HasUniqueId.java  |  36 ++
 .../applib-svc/examples/services/HasUsername.java  |  33 +
 .../RepresentsInteractionMemberExecution.java      |  37 ++
 .../examples/services/WithTransactionScope.java    |  27 +
 .../services/acceptheader/AcceptHeaderService.java |  32 +
 .../appfeat/ApplicationFeatureRepository.java      |  42 ++
 .../services/appfeat/ApplicationMemberType.java    |  33 +
 .../examples/services/appfeat/package-info.java    |  27 +
 .../services/audit/AuditEntryPropertyIdType.java   |  33 +
 .../audit/AuditEntryPropertyValueType.java         |  33 +
 .../examples/services/audit/AuditerService.java    |  56 ++
 .../services/audit/AuditerServiceLogging.java      |  68 ++
 .../examples/services/audit/package-info.java      |  26 +
 .../background/BackgroundCommandService.java       |  59 ++
 .../examples/services/background/package-info.java |  27 +
 .../examples/services/bookmark/Bookmark.java       | 187 ++++++
 .../examples/services/bookmark/BookmarkHolder.java |  27 +
 .../services/bookmark/BookmarkHolder_lookup.java   |  55 ++
 .../services/bookmark/BookmarkHolder_object.java   |  55 ++
 .../services/bookmark/BookmarkService.java         |  70 ++
 .../examples/services/bookmark/package-info.java   |  27 +
 .../services/bookmarkui/BookmarkUiService.java     |  29 +
 .../examples/services/clock/ClockService.java      |  73 +++
 .../examples/services/clock/package-info.java      |  25 +
 .../examples/services/command/Command.java         | 436 +++++++++++++
 .../examples/services/command/CommandContext.java  |  59 ++
 .../examples/services/command/CommandDefault.java  | 284 ++++++++
 .../services/command/CommandDtoProcessor.java      |  49 ++
 .../CommandDtoProcessorForActionAbstract.java      |  41 ++
 .../CommandDtoProcessorForPropertyAbstract.java    |  35 +
 .../services/command/CommandExecutorService.java   |  42 ++
 .../examples/services/command/CommandWithDto.java  |  34 +
 .../examples/services/command/package-info.java    |  27 +
 .../services/command/spi/CommandService.java       |  54 ++
 .../services/confview/ConfigurationMenu.java       |  60 ++
 .../services/confview/ConfigurationProperty.java   |  84 +++
 .../confview/ConfigurationProperty.layout.xml      |  57 ++
 .../services/confview/ConfigurationProperty.png    | Bin 0 -> 927 bytes
 .../confview/ConfigurationViewService.java         |  35 +
 .../examples/services/confview/package-info.java   |  26 +
 .../services/conmap/ContentMappingService.java     |  66 ++
 .../ContentMappingServiceForCommandDto.java        | 157 +++++
 .../ContentMappingServiceForCommandsDto.java       |  95 +++
 .../command/spi/CommandDtoProcessorService.java    |  38 ++
 .../examples/services/conmap/package-info.java     |  27 +
 .../examples/services/email/EmailService.java      |  58 ++
 .../examples/services/email/package-info.java      |  26 +
 .../examples/services/error/ErrorDetails.java      |  82 +++
 .../services/error/ErrorReportingService.java      |  30 +
 .../applib-svc/examples/services/error/Ticket.java |  85 +++
 .../examples/services/error/package-info.java      |  28 +
 .../services/eventbus/EventBusService.java         |  33 +
 .../examples/services/eventbus/package-info.java   |  26 +
 .../services/exceprecog/ExceptionRecognizer.java   | 132 ++++
 .../exceprecog/ExceptionRecognizerAbstract.java    | 171 +++++
 .../exceprecog/ExceptionRecognizerComposite.java   | 178 ++++++
 .../exceprecog/ExceptionRecognizerForType.java     | 181 ++++++
 .../services/exceprecog/TranslatableException.java |  52 ++
 .../examples/services/exceprecog/package-info.java |  28 +
 .../examples/services/factory/FactoryService.java  |  87 +++
 .../examples/services/factory/package-info.java    |  26 +
 .../examples/services/grid/GridLoaderService.java  |  57 ++
 .../examples/services/grid/GridService.java        | 115 ++++
 .../examples/services/grid/GridSystemService.java  |  57 ++
 .../examples/services/grid/package-info.java       |  26 +
 .../examples/services/health/Health.java           |  46 ++
 .../services/health/HealthCheckService.java        |  33 +
 .../examples/services/hint/HintStore.java          |  67 ++
 .../examples/services/hint/package-info.java       |  28 +
 .../examples/services/i18n/LocaleProvider.java     |  26 +
 .../examples/services/i18n/TranslatableString.java | 274 ++++++++
 .../examples/services/i18n/TranslationService.java | 112 ++++
 .../services/i18n/TranslationsResolver.java        |  30 +
 .../examples/services/i18n/package-info.java       |  28 +
 .../examples/services/iactn/Interaction.java       | 712 +++++++++++++++++++++
 .../services/iactn/InteractionContext.java         |  64 ++
 .../examples/services/iactn/package-info.java      |  29 +
 .../examples/services/inject/ServiceInjector.java  |  56 ++
 .../jaxb/CatalogingSchemaOutputResolver.java       | 154 +++++
 .../examples/services/jaxb/JaxbService.java        | 253 ++++++++
 .../examples/services/jaxb/JaxbServiceDefault.java | 117 ++++
 .../services/jaxb/StreamResultWithWriter.java      |  47 ++
 .../examples/services/jaxb/package-info.java       |  26 +
 .../examples/services/layout/LayoutService.java    |  86 +++
 .../services/layout/LayoutServiceMenu.java         | 121 ++++
 .../examples/services/layout/package-info.java     |  27 +
 .../examples/services/linking/DeepLinkService.java |  42 ++
 .../examples/services/linking/package-info.java    |  26 +
 .../services/menu/MenuBarsLoaderService.java       |  38 ++
 .../examples/services/menu/MenuBarsService.java    |  49 ++
 .../examples/services/message/MessageService.java  | 131 ++++
 .../examples/services/message/package-info.java    |  26 +
 .../examples/services/metamodel/DomainMember.java  |  54 ++
 .../examples/services/metamodel/DomainModel.java   |  27 +
 .../services/metamodel/MetaModelService.java       | 183 ++++++
 .../services/metamodel/MetaModelServicesMenu.java  | 252 ++++++++
 .../examples/services/metamodel/package-info.java  |  26 +
 .../examples/services/metrics/MetricsService.java  |  62 ++
 .../examples/services/metrics/package-info.java    |  27 +
 .../applib-svc/examples/services/package-info.java |  24 +
 .../services/publish/PublishedObjects.java         |  51 ++
 .../services/publish/PublisherService.java         |  43 ++
 .../services/publish/PublisherServiceLogging.java  |  72 +++
 .../examples/services/publish/package-info.java    |  28 +
 .../queryresultscache/QueryResultCacheControl.java |  25 +
 .../queryresultscache/QueryResultsCache.java       | 125 ++++
 .../QueryResultsCacheDefault.java                  | 163 +++++
 .../services/queryresultscache/package-info.java   |  27 +
 .../services/registry/ServiceRegistry.java         | 173 +++++
 .../examples/services/registry/package-info.java   |  27 +
 .../services/repository/RepositoryService.java     | 223 +++++++
 .../examples/services/repository/package-info.java |  27 +
 .../examples/services/routing/RoutingService.java  |  34 +
 .../examples/services/routing/package-info.java    |  26 +
 .../examples/services/scratchpad/Scratchpad.java   |  78 +++
 .../examples/services/scratchpad/package-info.java |  26 +
 .../services/session/SessionLoggingService.java    |  66 ++
 .../examples/services/session/package-info.java    |  24 +
 .../sessmgmt/SessionManagementService.java         |  45 ++
 .../examples/services/sessmgmt/package-info.java   |  28 +
 .../examples/services/sudo/SudoService.java        |  94 +++
 .../examples/services/sudo/package-info.java       |  29 +
 .../examples/services/swagger/SwaggerService.java  |  78 +++
 .../examples/services/swagger/package-info.java    |  26 +
 .../services/tablecol/TableColumnOrderService.java |  70 ++
 .../examples/services/title/TitleService.java      |  37 ++
 .../examples/services/title/package-info.java      |  25 +
 .../services/urlencoding/UrlEncodingService.java   |  47 ++
 ...rlEncodingServiceUsingBaseEncodingAbstract.java |  44 ++
 .../UrlEncodingServiceWithCompression.java         |  66 ++
 .../services/urlencoding/package-info.java         |  29 +
 .../examples/services/user/UserService.java        |  31 +
 .../examples/services/user/package-info.java       |  25 +
 .../services/userprof/UserProfileService.java      |  43 ++
 .../examples/services/userprof/package-info.java   |  28 +
 .../services/userreg/EmailNotificationService.java |  54 ++
 .../examples/services/userreg/UserDetails.java     |  69 ++
 .../services/userreg/UserRegistrationService.java  |  54 ++
 .../userreg/events/EmailEventAbstract.java         |  50 ++
 .../userreg/events/EmailRegistrationEvent.java     |  33 +
 .../userreg/events/PasswordResetEvent.java         |  33 +
 .../examples/services/userreg/package-info.java    |  27 +
 .../examples/services/wrapper/AsyncWrap.java       | 163 +++++
 .../services/wrapper/DisabledException.java        |  42 ++
 .../examples/services/wrapper/HiddenException.java |  42 ++
 .../services/wrapper/InteractionException.java     |  75 +++
 .../services/wrapper/InvalidException.java         |  45 ++
 .../examples/services/wrapper/WrapperFactory.java  | 285 +++++++++
 .../examples/services/wrapper/WrappingObject.java  |  70 ++
 .../services/wrapper/events/AccessEvent.java       |  44 ++
 .../wrapper/events/ActionArgumentEvent.java        |  72 +++
 .../wrapper/events/ActionInvocationEvent.java      |  60 ++
 .../wrapper/events/ActionUsabilityEvent.java       |  38 ++
 .../wrapper/events/ActionVisibilityEvent.java      |  38 ++
 .../wrapper/events/CollectionAccessEvent.java      |  40 ++
 .../wrapper/events/CollectionAddToEvent.java       |  54 ++
 .../wrapper/events/CollectionMethodEvent.java      |  92 +++
 .../wrapper/events/CollectionRemoveFromEvent.java  |  49 ++
 .../wrapper/events/CollectionUsabilityEvent.java   |  38 ++
 .../wrapper/events/CollectionVisibilityEvent.java  |  38 ++
 .../services/wrapper/events/InteractionEvent.java  | 194 ++++++
 .../services/wrapper/events/ObjectTitleEvent.java  |  45 ++
 .../wrapper/events/ObjectValidityEvent.java        |  45 ++
 .../wrapper/events/ObjectVisibilityEvent.java      |  38 ++
 .../services/wrapper/events/ParseValueEvent.java   |  61 ++
 .../wrapper/events/PropertyAccessEvent.java        |  46 ++
 .../wrapper/events/PropertyModifyEvent.java        |  52 ++
 .../wrapper/events/PropertyUsabilityEvent.java     |  38 ++
 .../wrapper/events/PropertyVisibilityEvent.java    |  38 ++
 .../wrapper/events/ProposedHolderEvent.java        |  34 +
 .../services/wrapper/events/UsabilityEvent.java    |  43 ++
 .../services/wrapper/events/ValidityEvent.java     |  61 ++
 .../services/wrapper/events/VisibilityEvent.java   |  43 ++
 .../services/wrapper/events/package-info.java      |  26 +
 .../wrapper/listeners/InteractionAdapter.java      | 109 ++++
 .../wrapper/listeners/InteractionListener.java     | 194 ++++++
 .../examples/services/wrapper/package-info.java    |  28 +
 .../examples/services/xactn/Transaction.java       |  51 ++
 .../examples/services/xactn/TransactionId.java     |  45 ++
 .../services/xactn/TransactionService.java         |  82 +++
 .../examples/services/xactn/TransactionState.java  |  94 +++
 .../examples/services/xactn/package-info.java      |  26 +
 .../services/xmlsnapshot/XmlSnapshotService.java   | 103 +++
 .../xmlsnapshot/XmlSnapshotServiceAbstract.java    | 142 ++++
 .../services/xmlsnapshot/package-info.java         |  26 +
 .../main/doc/modules/config/examples/.gitignore    |   1 -
 .../modules/config/examples/generated/Other.adoc   |  29 +
 .../generated/isis.authentication.shiro.adoc       |   6 +
 .../config/examples/generated/isis.persistor.adoc  |   6 +
 .../generated/isis.persistor.datanucleus.adoc      |  20 +
 .../generated/isis.persistor.datanucleus.impl.adoc | 225 +++++++
 .../config/examples/generated/isis.reflector.adoc  |  15 +
 .../examples/generated/isis.reflector.facet.adoc   | 149 +++++
 .../generated/isis.reflector.validator.adoc        |  80 +++
 .../examples/generated/isis.service.email.adoc     |  59 ++
 .../config/examples/generated/isis.services.adoc   |  60 ++
 .../generated/isis.viewer.restfulobjects.adoc      |  56 ++
 .../examples/generated/isis.viewer.wicket.adoc     | 276 ++++++++
 .../config/examples/generated/isis.viewers.adoc    |  34 +
 405 files changed, 32699 insertions(+), 7 deletions(-)

diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/.gitignore b/core/applib/src/main/doc/modules/applib-ant/examples/.gitignore
deleted file mode 100644
index 654617b..0000000
--- a/core/applib/src/main/doc/modules/applib-ant/examples/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-**/*
-!.gitignore
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Action.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Action.java
new file mode 100644
index 0000000..85590ab
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Action.java
@@ -0,0 +1,224 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.events.domain.ActionDomainEvent;
+import org.apache.isis.applib.services.command.CommandDtoProcessor;
+import org.apache.isis.applib.services.command.CommandWithDto;
+import org.apache.isis.applib.services.command.spi.CommandService;
+import org.apache.isis.applib.services.conmap.command.ContentMappingServiceForCommandDto;
+import org.apache.isis.applib.services.conmap.command.ContentMappingServiceForCommandsDto;
+import org.apache.isis.applib.value.Blob;
+import org.apache.isis.applib.value.Clob;
+
+/**
+ * Domain semantics for domain object collection.
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Mixin(method = "act")
+public @interface Action {
+
+
+    /**
+     * Indicates that an invocation of the action should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.domain.ActionDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * public class SomeObject{
+     *     public static class ChangeStartDateDomainEvent extends ActionDomainEvent&lt;SomeObject&gt; { ... }
+     *
+     *     &#64;Action(domainEvent=ChangedStartDateDomainEvent.class)
+     *     public void changeStartDate(final Date startDate) { ...}
+     *     ...
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ActionDomainEvent<?>> domainEvent() default ActionDomainEvent.Default.class;
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates where (in the UI) the action is not visible to the user.
+     *
+     * <p>
+     * It is also possible to suppress an action's visibility using {@link ActionLayout#hidden()}.
+     * </p>
+     *
+     * <p>
+     *     For {@link DomainService domain service} actions, the action's visibility is dependent upon its
+     *     {@link DomainService#nature() nature} and for contributed actions on how it is
+     *     {@link ActionLayout#contributed()}.
+     * </p>
+     */
+    Where hidden() default Where.NOT_SPECIFIED;
+
+    // //////////////////////////////////////
+
+    /**
+     * The action semantics, either {@link SemanticsOf#SAFE_AND_REQUEST_CACHEABLE cached}, {@link SemanticsOf#SAFE safe} (query-only),
+     * {@link SemanticsOf#IDEMPOTENT idempotent} or
+     * {@link SemanticsOf#NON_IDEMPOTENT non-idempotent}.
+     */
+    SemanticsOf semantics() default SemanticsOf.NOT_SPECIFIED;
+
+    // //////////////////////////////////////
+
+    /**
+     * Whether the action invocation should be reified into a {@link org.apache.isis.applib.services.command.Command} object.
+     */
+    CommandReification command() default CommandReification.NOT_SPECIFIED;
+
+    /**
+     * How the {@link org.apache.isis.applib.services.command.Command Command} object provided by the
+     * {@link org.apache.isis.applib.services.command.CommandContext CommandContext} domain service should be persisted.
+     */
+    CommandPersistence commandPersistence() default CommandPersistence.PERSISTED;
+
+    /**
+     * How the command/action should be executed.
+     *
+     * <p>
+     * If the corresponding {@link org.apache.isis.applib.services.command.Command Command} object is persisted,
+     * then its {@link org.apache.isis.applib.services.command.Command#getExecuteIn() invocationType} property
+     * will be set to this value.
+     * </p>
+     */
+    CommandExecuteIn commandExecuteIn() default CommandExecuteIn.FOREGROUND;
+
+    /**
+     * The {@link CommandDtoProcessor} to process this command's DTO.
+     *
+     * <p>
+     *     Specifying a processor requires that the implementation of {@link CommandService} provides a
+     *     custom implementation of {@link org.apache.isis.applib.services.command.Command} that additional extends
+     *     from {@link CommandWithDto}.
+     * </p>
+     *
+     * <p>
+     *     The processor itself is used by {@link ContentMappingServiceForCommandDto} and
+     *     {@link ContentMappingServiceForCommandsDto} to dynamically transform the DTOs.
+     * </p>
+     */
+    Class<? extends CommandDtoProcessor> commandDtoProcessor() default CommandDtoProcessor.class;
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Whether the action invocation should be published.
+     *
+     * <p>
+     * Requires that an implementation of the {@link org.apache.isis.applib.services.publish.PublisherService}
+     * or {@link org.apache.isis.applib.services.publish.PublisherService} is registered with the framework.
+     * </p>
+     */
+    Publishing publishing() default Publishing.NOT_SPECIFIED;
+
+
+
+    // //////////////////////////////////////
+
+    /**
+     * The type-of the elements returned by the action.
+     * @return
+     */
+    Class<?> typeOf() default Object.class;
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Whether the action is restricted to prototyping.
+     *
+     * <p>
+     *     By default there are no restrictions, with the action being available in all environments.
+     * </p>
+     */
+    RestrictTo restrictTo() default RestrictTo.NOT_SPECIFIED;
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Associates this action with a property or collection, specifying its id.
+     *
+     * <p>
+     *     This is an alternative to using {@link MemberOrder#name()}.  To specify the order (equivalent to
+     *     {@link MemberOrder#sequence()}}), use {@link #associateWithSequence()}.
+     * </p>
+     *
+     * <p>
+     *     For example <code>@Action(associateWith="items", associateWithSequence="2.1")</code>
+     * </p>
+     *
+     * <p>
+     *     If an action is associated with a collection, then any matching parameters will have
+     *     their choices automatically inferred from the collection (if not otherwise specified)
+     *     and any collection parameter defaults can be specified using checkboxes
+     *     (in the Wicket UI, at least).
+     * </p>
+     */
+    String associateWith() default "";
+
+    /**
+     * Specifies the sequence/order in the UI for an action that's been associated with a property or collection.
+     *
+     * <p>
+     *     This is an alternative to using {@link MemberOrder#sequence()}, but is ignored if
+     *     {@link Action#associateWith()} isn't also specified.
+     * </p>
+     *
+     * <p>
+     *     For example <code>@Action(associateWith="items", associateWithSequence="2.1")</code>
+     * </p>
+     */
+    String associateWithSequence() default "1";
+
+    /**
+     * For uploading {@link Blob} or {@link Clob}, optionally restrict the files accepted (eg <tt>.xslx</tt>).
+     *
+     * <p>
+     * The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
+     * </p>
+     *
+     * @see <a href="http://www.w3schools.com/tags/att_input_accept.asp">http://www.w3schools.com</a>
+     */
+    String fileAccept() default "";
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ActionLayout.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ActionLayout.java
new file mode 100644
index 0000000..45239f3
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ActionLayout.java
@@ -0,0 +1,158 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Layout hints for actions.
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Mixin(method = "act")
+public @interface ActionLayout {
+
+
+    /**
+     * Whether (and how) this action can be bookmarked in the UI.
+     *
+     * <p>
+     *     For bookmarkable actions, either {@link org.apache.isis.applib.annotation.BookmarkPolicy#AS_ROOT}
+     *     and {@link org.apache.isis.applib.annotation.BookmarkPolicy#AS_CHILD} can be used (they are treated
+     *     identically).
+     * </p>
+     */
+    BookmarkPolicy bookmarking() default BookmarkPolicy.NOT_SPECIFIED;
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates the css class that an action should have.
+     *
+     * <p>
+     *     For the Wicket viewer, this can be a bootstrap class such as <code>btn-info</code>.
+     * </p>
+     */
+    String cssClass() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a> CSS class to decorate an
+     * action (button or menu item).
+     */
+    String cssClassFa() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates the position of the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a>
+     * icon. The icon could be rendered on the left or the right of the action button
+     */
+    CssClassFaPosition cssClassFaPosition() default CssClassFaPosition.LEFT;
+
+    @XmlType(
+            namespace = "http://isis.apache.org/applib/layout/component"
+            )
+    enum CssClassFaPosition {
+        LEFT, RIGHT
+    }
+
+    // //////////////////////////////////////
+
+    /**
+     * Description of this action, eg to be rendered in a tooltip.
+     */
+    String describedAs() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates where in the UI the action should <i>not</i>not be visible.
+     */
+    Where hidden() default Where.NOT_SPECIFIED;
+
+    // //////////////////////////////////////
+
+    /**
+     * Name of this action (overriding the name derived from its name in code).
+     */
+    String named() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * For actions that are associated with a property, indicates the positioning of the
+     * action's button relative to the property.
+     *
+     * <p>
+     * Ignored if the action has not been associated with a property.
+     * </p>
+     */
+    Position position() default Position.NOT_SPECIFIED;
+
+    @XmlType(
+            namespace = "http://isis.apache.org/applib/layout/component"
+            )
+    enum Position {
+        BELOW,
+        RIGHT,
+        PANEL,
+        PANEL_DROPDOWN,
+        NOT_SPECIFIED
+    }
+
+    /**
+     * How this parameters for this action are prompted, either {@link PromptStyle#DIALOG dialog} or {@link PromptStyle#INLINE inline}.
+     */
+    PromptStyle promptStyle() default PromptStyle.AS_CONFIGURED;
+
+
+    // //////////////////////////////////////
+
+    /**
+     * If the action returns its target, then determines whether to update the page or
+     * instead to redirect (forcing a re-rendering of a new page).
+     */
+    Redirect redirectPolicy() default Redirect.AS_CONFIGURED;
+
+    // //////////////////////////////////////
+
+    /**
+     * For actions of domain services that can be viewed and contributed (that is, whose
+     * {@link DomainService#nature() nature} is either {@link org.apache.isis.applib.annotation.NatureOfService#VIEW}
+     * or {@link org.apache.isis.applib.annotation.NatureOfService#VIEW_CONTRIBUTIONS_ONLY}), specifies how the
+     * contribution should be implemented, as an action, as an association, or as both.
+     *
+     * <p>
+     *     Has no meaning for actions of domain entities.
+     * </p>
+     */
+    Contributed contributed() default Contributed.NOT_SPECIFIED;
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Auditing.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Auditing.java
new file mode 100644
index 0000000..283c859
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Auditing.java
@@ -0,0 +1,46 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * The available policies for auditing changes to the properties of the object.
+ */
+public enum Auditing {
+    /**
+     * The auditing of the object should be as per the default auditing policy configured in <tt>isis.properties</tt>.
+     *
+     * <p>
+     *     If no auditing policy is configured, then the auditing is disabled.
+     * </p>
+     */
+    AS_CONFIGURED,
+    /**
+     * Audit changes to this object.
+     */
+    ENABLED,
+    /**
+     * Do not audit changes to this object (even if otherwise configured to enable auditing).
+     */
+    DISABLED,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/BookmarkPolicy.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/BookmarkPolicy.java
new file mode 100644
index 0000000..a310d85
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/BookmarkPolicy.java
@@ -0,0 +1,45 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum BookmarkPolicy {
+    /**
+     * Can be bookmarked, and is a top-level 'root' (or parent) bookmark.
+     */
+    AS_ROOT,
+    /**
+     * Can be bookmarked, but only as a child or some other parent/root bookmark
+     */
+    AS_CHILD,
+    /**
+     * An unimportant entity that should never be bookmarked.
+     */
+    NEVER,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Bounding.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Bounding.java
new file mode 100644
index 0000000..fc33caa
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Bounding.java
@@ -0,0 +1,28 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * Whether the set of instances of a domain object is bounded or not.
+ */
+public enum Bounding {
+    BOUNDED,
+    UNBOUNDED,
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Collection.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Collection.java
new file mode 100644
index 0000000..fa8944a
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Collection.java
@@ -0,0 +1,110 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.events.domain.CollectionDomainEvent;
+
+/**
+ * Domain semantics for domain object collection.
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Mixin(method = "coll")
+public @interface Collection {
+
+    /**
+     * Indicates that changes to the collection that should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.domain.CollectionDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     * <pre>
+     * public class Order {
+     *   public static class OrderLineItems extends CollectionDomainEvent { ... }
+     *
+     *   &#64;CollectionInteraction(OrderLineItems.class)
+     *   public SortedSet&lt;OrderLine&gt; getLineItems() { ...}
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends CollectionDomainEvent<?,?>> domainEvent() default CollectionDomainEvent.Default.class;
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates when the collection is not visible to the user.
+     */
+    Where hidden() default Where.NOT_SPECIFIED;
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
+     *
+     * <p>
+     *     Note that non-editable objects can nevertheless have actions invoked upon them.
+     * </p>
+     */
+    Editing editing() default Editing.NOT_SPECIFIED;
+
+    /**
+     * If {@link #editing()} is set to {@link Editing#DISABLED},
+     * then the reason to provide to the user as to why this property cannot be edited.
+     */
+    String editingDisabledReason() default "";
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Indicates whether the collecion should be included or excluded from mementos.
+     *
+     * <p>
+     *     To ensure that the collection is actually not persisted in the objectstore, 
+     *     also annotate with the JDO annotation {@link javax.jdo.annotations.NotPersistent}.
+     * </p>
+     */
+    MementoSerialization mementoSerialization() default MementoSerialization.NOT_SPECIFIED;
+
+
+
+    // //////////////////////////////////////
+
+    /**
+     * The type-of the elements held within the collection.
+     * @return
+     */
+    Class<?> typeOf() default Object.class;
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CollectionLayout.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CollectionLayout.java
new file mode 100644
index 0000000..bc38db5
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CollectionLayout.java
@@ -0,0 +1,135 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.Comparator;
+
+/**
+ * Layout hints for collections.
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Mixin(method = "coll")
+public @interface CollectionLayout {
+
+
+    /**
+     * Indicates the css class that a collection should have.
+     */
+    String cssClass() default "";
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Description of this collection, eg to be rendered in a tooltip.
+     */
+    String describedAs() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates which view is used by default to render the collection.
+     *
+     * <p>
+     *     The only view available within the core framework is &quot;table&quot;.  However, other views can be added
+     *     as extensions.  Examples are those provided by the (non-ASF) <a href="isisaddons.org">Isis addons</a>, eg
+     *     &quot;<a href="https://github.com/isisaddons/isis-wicket-excel">excel</a>&quot;,
+     *     &quot;<a href="https://github.com/isisaddons/isis-wicket-fullcalendar2">calendar</a>&quot; and
+     *     &quot;<a href="https://github.com/isisaddons/isis-wicket-gmap3">map</a>&quot;.
+     * </p>
+     */
+    String defaultView() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates where in the UI the collection should <i>not</i>not be visible.
+     *
+     * <p>
+     *      Only {@link Where#NOWHERE NOWHERE} or {@link Where#EVERYWHERE EVERYWHERE}/{@link Where#ANYWHERE ANYWHERE}
+     *      apply for collections.
+     * </p>
+     */
+    Where hidden() default Where.NOT_SPECIFIED;
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Name of this collection (overriding the name derived from its name in code).
+     */
+    String named() default "";
+
+
+    // //////////////////////////////////////
+
+    /**
+     * A flag indicating whether the value of {@linkplain #named()} should be HTML escaped or not.
+     */
+    boolean namedEscaped() default true;
+
+    /**
+     * The page size for instances of this class when rendered within
+     * a table.
+     *
+     * <p>
+     * If annotated on a collection, then the page size refers to
+     * parented collections (eg <tt>Order#lineItems</tt>).
+     *
+     * <p>
+     * If annotated on a type, then the page size refers to standalone
+     * collections (eg as returned from a repository query).
+     */
+    int paged() default -1;
+
+
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates that the elements in a ({@link java.util.SortedSet}) collection should be sorted according to a different order than the
+     * natural sort order, as defined by the specified{@link java.util.Comparator}.
+     *
+     * <p>
+     * Whenever there is a collection of type {@link java.util.SortedSet}, the domain entity referenced
+     * is expected to implement {@link Comparable}, ie to have a natural ordering.  In effect tis
+     * means that all domain entities should provide a natural ordering.
+     *
+     * <p>
+     * However, in some circumstances the ordering of collection may be different to the entity's
+     * natural ordering.  For example, the entity may represent an interval of time sorted by its
+     * <i>startDate</i> ascending, but the collection may wish to sort by <i>startDate</i>.
+     *
+     * <p>
+     * The purpose of this annotation is to provide a {@link java.util.Comparator} such that the collection
+     * may be sorted in an order more suitable to the context.
+     */
+    @SuppressWarnings("rawtypes")
+    Class sortedBy() default Comparator.class;
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandExecuteIn.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandExecuteIn.java
new file mode 100644
index 0000000..789ab07
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandExecuteIn.java
@@ -0,0 +1,79 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * Whether a command should be executed immediately and synchronously in the foreground or rather should only be
+ * persisted (such that it can be executed asynchronously in the background by some other mechanism).
+ *
+ * <p>
+ *     Note: this enum is <i>not</i> an inner class of the {@link org.apache.isis.applib.annotation.Action} annotation
+ *     because in the future we may also support commands for {@link org.apache.isis.applib.annotation.Property} and
+ *     {@link org.apache.isis.applib.annotation.Collection}.
+ * </p>
+ */
+public enum CommandExecuteIn {
+    /**
+     * Execute synchronously in the &quot;foreground&quot;, wait for the results.
+     */
+    FOREGROUND,
+    /**
+     * Execute &quot;asynchronously&quot; through the {@link org.apache.isis.applib.services.background.BackgroundCommandService}, returning (if possible) the
+     * persisted {@link org.apache.isis.applib.services.command.Command command} object as a placeholder to the
+     * result.
+     */
+    BACKGROUND,
+    /**
+     * For commands that are replicated from a master onto a slave and are to be replayed (typically using the same
+     * mechanism as "regular" background commands, eg a background job).
+     *
+     * <p>
+     *     For framework use, not intended to be used in application code.
+     * </p>
+     */
+    REPLAYABLE,
+    /**
+     * For commands that have been excluded and will not run.
+     * These are typically for a replayable command that has hit an exception (which normally would prevent any further
+     * replayable commands from being replayed) and which the administrator has decided to skip.
+     */
+    EXCLUDED
+    ;
+
+    public boolean isForeground() { return this == FOREGROUND; }
+    public boolean isBackground() { return this == BACKGROUND; }
+    public boolean isReplayable() { return this == REPLAYABLE; }
+    public boolean isExcluded() { return this == EXCLUDED; }
+
+
+    public static class Type {
+
+        private Type() {}
+
+        public static class Meta {
+
+            public static final int MAX_LEN = 10;
+
+            private Meta() {}
+
+        }
+    }
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandPersistence.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandPersistence.java
new file mode 100644
index 0000000..d8121f7
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandPersistence.java
@@ -0,0 +1,43 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * Whether the command should be persisted.
+ */
+public enum CommandPersistence {
+    /**
+     * (If the configured {@link org.apache.isis.applib.services.command.spi.CommandService} supports it), indicates that the
+     * {@link org.apache.isis.applib.services.command.Command Command} object should be persisted.
+     */
+    PERSISTED,
+    /**
+     * (If the configured {@link org.apache.isis.applib.services.command.spi.CommandService} supports it), indicates that the
+     * {@link org.apache.isis.applib.services.command.Command Command} object should only be persisted if
+     * another service, such as the {@link org.apache.isis.applib.services.background.BackgroundCommandService}, hints that it should.
+     */
+    IF_HINTED,
+    /**
+     * (Even if the configured {@link org.apache.isis.applib.services.command.spi.CommandService} supports it), indicates that the
+     * {@link org.apache.isis.applib.services.command.Command Command} object should <i>not</i> be persisted (even if
+     * another service, such as the {@link org.apache.isis.applib.services.background.BackgroundCommandService}, hints that it should).
+     */
+    NOT_PERSISTED;
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandReification.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandReification.java
new file mode 100644
index 0000000..8128e63
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/CommandReification.java
@@ -0,0 +1,52 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * The available policies as to whether action invocations are reified into commands.
+ *
+ * <p>
+ *     Note: this enum is <i>not</i> an inner class of the {@link org.apache.isis.applib.annotation.Action} annotation
+ *     because in the future we may also support commands for {@link org.apache.isis.applib.annotation.Property} and
+ *     {@link org.apache.isis.applib.annotation.Collection}.
+ * </p>
+ */
+public enum CommandReification {
+    /**
+     * Whether the action should be handled as a command is per the default command configured in <tt>isis.properties</tt>.
+     *
+     * <p>
+     *     If no command policy is configured, then the action is <i>not</i> treated as a command.
+     * </p>
+     */
+    AS_CONFIGURED,
+    /**
+     * Handle the action as a command, irrespective of any configuration settings.
+     */
+    ENABLED,
+    /**
+     * Do not handle the action as a command, irrespective of any configuration settings.
+     */
+    DISABLED,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Constants.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Constants.java
new file mode 100644
index 0000000..c33615f
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Constants.java
@@ -0,0 +1,27 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+public class Constants {
+
+    private Constants(){}
+
+    public static final String MENU_ORDER_DEFAULT = "" + (Integer.MAX_VALUE - 100);
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Contributed.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Contributed.java
new file mode 100644
index 0000000..64cb43c
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Contributed.java
@@ -0,0 +1,55 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The means by which a domain service action will be contributed to a domain object.
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum Contributed {
+    /**
+     * Default: contributed as both an action and also (if takes a single argument and has safe semantics) as an association
+     * (contributed property if returns a single value, contributed collection if returns a collection).
+     */
+    AS_BOTH,
+    /**
+     * Contributed as an action but <i>not</i> as an association.
+     */
+    AS_ACTION,
+    /**
+     * (If takes a single argument and has safe semantics) then is contributed as an association
+     * (contributed property if returns a single value, contributed collection if returns a collection) but <i>not</i>
+     * as an action.
+     */
+    AS_ASSOCIATION,
+    /**
+     * The action is not contributed as either an action or as an association.
+     */
+    AS_NEITHER,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Defaulted.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Defaulted.java
new file mode 100644
index 0000000..f01d66b
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Defaulted.java
@@ -0,0 +1,83 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.adapters.DefaultsProvider;
+import org.apache.isis.commons.internal.encoding.Encodable;
+
+/**
+ * Indicates that the class should have a default, by providing a link to a
+ * {@link DefaultsProvider}, or some externally-configured mechanism.
+ *
+ * <p>
+ * This possibly seems a little tortuous. The more obvious means to provide a
+ * default would seem to be a simple <tt>@DefaultsTo(new SomeObject())</tt>.
+ * However, Java only allows primitives, strings and class literals to be used
+ * in annotations. We therefore need delegate to an external implementation.
+ * (This more complex design is also more flexible of course; the implementation
+ * of {@link DefaultsProvider} could adjust the default it provides according to
+ * circumstance, for example).
+ *
+ * @see Encodable
+ * @see Parseable
+ * @see Value
+ *
+ * <p>
+ *     Note: This annotation is only incompletely recognized by the framework, and may be deprecated in the future.
+ * </p>
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Defaulted {
+
+    /**
+     * The fully qualified name of a class that implements the
+     * {@link DefaultsProvider} interface.
+     *
+     * <p>
+     * This is optional because some implementations may pick up the defaults
+     * provider via a configuration file, or via the equivalent
+     * {@link #defaultsProviderClass()}.
+     *
+     * <p>
+     * Implementation note: the default value provided here is simply an empty
+     * string because <tt>null</tt> is not a valid default.
+     */
+    String defaultsProviderName() default "";
+
+    /**
+     * As per {@link #defaultsProviderName()}, but specifying a class literal
+     * rather than a fully qualified class name.
+     *
+     * <p>
+     * Implementation note: the default value provided here is simply the
+     * {@link Defaulted}'s own class, because <tt>null</tt> is not a valid
+     * default.
+     */
+    Class<?> defaultsProviderClass() default Defaulted.class;
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainObject.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainObject.java
new file mode 100644
index 0000000..391e992
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainObject.java
@@ -0,0 +1,329 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.events.domain.ActionDomainEvent;
+import org.apache.isis.applib.events.domain.CollectionDomainEvent;
+import org.apache.isis.applib.events.domain.PropertyDomainEvent;
+import org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent;
+import org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent;
+import org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent;
+import org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent;
+import org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent;
+import org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent;
+import org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent;
+
+/**
+ * Domain semantics for domain objects (entities and view models; for services see {@link org.apache.isis.applib.annotation.DomainService}).
+ * 
+ * @apiNote Meta annotation {@link Component} allows for the Spring framework to pick up (discover) the 
+ * annotated type. 
+ * For more details see <code>org.apache.isis.config.beans.IsisBeanFactoryPostProcessorForSpring</code>
+ */
+@Inherited
+@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface DomainObject {
+
+    /**
+     * Whether the entity should be audited (note: does not apply to view models or other recreatable objects.
+     *
+     * <p>
+     * Requires that an implementation of the {@link org.apache.isis.applib.services.audit.AuditerService} is
+     * registered with the framework.
+     * </p>
+     */
+    Auditing auditing() default Auditing.NOT_SPECIFIED;
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Whether changes to the object should be published.
+     *
+     * <p>
+     * Requires that an implementation of the {@link org.apache.isis.applib.services.publish.PublisherService} is
+     * registered with the framework.
+     * </p>
+     */
+    Publishing publishing() default Publishing.NOT_SPECIFIED;
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * The class of the domain service that provides an <code>autoComplete(String)</code> method.
+     *
+     * <p>
+     * It is sufficient to specify an interface rather than a concrete type.
+     */
+    Class<?> autoCompleteRepository() default Object.class;
+
+
+    /**
+     * The method (despite its name, not necessarily an action) to use in order to perform the auto-complete search
+     * (defaults to &quot;autoComplete&quot;).
+     *
+     * <p>
+     * The method is required to accept a single string parameter, and must return a list of the domain type.
+     */
+    String autoCompleteAction() default "autoComplete";
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Indicates that the class has a bounded, or finite, set of instances.
+     *
+     * <p>
+     *     Takes precedence over auto-complete.
+     * </p>
+     *
+     * <p>
+     *     Note: this replaces bounded=true|false prior to v2.x
+     * </p>
+     *
+     */
+    Bounding bounding() default Bounding.NOT_SPECIFIED;
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
+     *
+     * <p>
+     *     Note that non-editable objects can nevertheless have actions invoked upon them.
+     * </p>
+     */
+    Editing editing() default Editing.NOT_SPECIFIED;
+
+
+    /**
+     * If {@link #editing()} is set to {@link Editing#DISABLED},
+     * then the reason to provide to the user as to why the object's properties cannot be edited/collections modified.
+     */
+    String editingDisabledReason() default "Disabled";
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Provides a unique abbreviation for the object type, eg &quot;customer.Customer&quot; for Customer.
+     *
+     * <p>
+     * This value, if specified, is used in the serialized form of the object's OID.  An OID is
+     * used by the framework to unique identify an object over time (same concept as a URN).
+     * </p>
+     */
+    String objectType() default "";
+
+
+    // //////////////////////////////////////
+
+
+    /**
+     * The nature of this domain object.
+     */
+    Nature nature() default Nature.NOT_SPECIFIED;
+
+
+
+    /**
+     * Equivalent to {@link Mixin#method()}.
+     *
+     * <p>
+     *     Applicable only if {@link #nature()} is {@link Nature#MIXIN}.
+     * </p>
+     */
+    String mixinMethod() default Mixin.DEFAULT_METHOD_NAME;
+
+    // //////////////////////////////////////
+
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ObjectCreatedEvent<?>> createdLifecycleEvent() default ObjectCreatedEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ObjectPersistingEvent<?>> persistingLifecycleEvent() default ObjectPersistingEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ObjectPersistedEvent<?>> persistedLifecycleEvent() default ObjectPersistedEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ObjectLoadedEvent<?>> loadedLifecycleEvent() default ObjectLoadedEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ObjectUpdatingEvent<?>> updatingLifecycleEvent() default ObjectUpdatingEvent.Default.class;
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ObjectUpdatedEvent<?>> updatedLifecycleEvent() default ObjectUpdatedEvent.Default.class;
+
+
+    /**
+     * Indicates that the loading of the domain object should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent}.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends ObjectRemovingEvent<?>> removingLifecycleEvent() default ObjectRemovingEvent.Default.class;
+
+
+    /**
+     * Indicates that an invocation of <i>any</i> action of the domain object (that do not themselves specify their own
+     * <tt>&#64;Action(domainEvent=...)</tt> should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using the specified custom
+     * (subclass of) {@link ActionDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * &#64;DomainObject(actionDomainEvent=SomeObject.GenericActionDomainEvent.class)
+     * public class SomeObject{
+     *     public static class GenericActionDomainEvent extends ActionDomainEvent&lt;Object&gt; { ... }
+     *
+     *     public void changeStartDate(final Date startDate) { ...}
+     *     ...
+     * }
+     * </pre>
+     *
+     * <p>
+     *     This will result in all actions as a more specific type to use) to emit this event.
+     * </p>
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * It must also use <tt>Object</tt> as its generic type.  This is to allow mixins to also emit the same event.
+     * </p>
+     */
+    Class<? extends ActionDomainEvent<?>> actionDomainEvent() default ActionDomainEvent.Default.class;
+
+    /**
+     * Indicates that changes to <i>any</i> property of the domain object (that do not themselves specify their own
+     * <tt>&#64;Property(domainEvent=...)</tt> should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using the specified custom
+     * (subclass of) {@link PropertyDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * &#64;DomainObject(propertyDomainEvent=SomeObject.GenericPropertyDomainEvent.class)
+     * public class SomeObject{
+     *
+     *    public LocalDate getStartDate() { ...}
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * It must also use <tt>Object</tt> as its generic type.  This is to allow mixins to also emit the same event.
+     * </p>
+     */
+    Class<? extends PropertyDomainEvent<?,?>> propertyDomainEvent() default PropertyDomainEvent.Default.class;
+
+    /**
+     * Indicates that changes to <i>any</i> collection of the domain object (that do not themselves specify their own
+     * <tt>&#64;Collection(domainEvent=...)</tt>  should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link CollectionDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     * <pre>
+     * &#64;DomainObject(collectionDomainEvent=Order.GenericCollectionDomainEvent.class)
+     * public class Order {
+     *
+     *   public SortedSet&lt;OrderLine&gt; getLineItems() { ...}
+     * }
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * It must also use <tt>Object</tt> as its generic type.  This is to allow mixins to also emit the same event.
+     * </p>
+     */
+    Class<? extends CollectionDomainEvent<?,?>> collectionDomainEvent() default CollectionDomainEvent.Default.class;
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainObjectLayout.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainObjectLayout.java
new file mode 100644
index 0000000..e971135
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainObjectLayout.java
@@ -0,0 +1,158 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.events.ui.CssClassUiEvent;
+import org.apache.isis.applib.events.ui.IconUiEvent;
+import org.apache.isis.applib.events.ui.LayoutUiEvent;
+import org.apache.isis.applib.events.ui.TitleUiEvent;
+
+/**
+ * Layout hints for domain objects.
+ */
+@Inherited
+@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DomainObjectLayout {
+
+
+    /**
+     * Which subclass of {@link TitleUiEvent} should be used to obtain a title.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends TitleUiEvent<?>> titleUiEvent() default TitleUiEvent.Default.class;
+
+    // //////////////////////////////////////
+
+    /**
+     * Which subclass of {@link IconUiEvent} should be used to obtain an icon.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends IconUiEvent<?>> iconUiEvent() default IconUiEvent.Default.class;
+
+    // //////////////////////////////////////
+
+    /**
+     * Which subclass of {@link CssClassUiEvent} should be used to obtain a CSS class.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends CssClassUiEvent<?>> cssClassUiEvent() default CssClassUiEvent.Default.class;
+
+    // //////////////////////////////////////
+
+    /**
+     * Which subclass of {@link LayoutUiEvent} should be used to obtain a layout.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends LayoutUiEvent<?>> layoutUiEvent() default LayoutUiEvent.Default.class;
+
+    /**
+     * Indicates the css class that a domain class (type) should have.
+     */
+    String cssClass() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a> CSS class to decorate an
+     * domain object.
+     */
+    String cssClassFa() default "";
+
+    /**
+     * Indicates the position of the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a>
+     * icon. The icon could be rendered on the left or the right of the object's title.
+     *
+     * <p>
+     *     This attribute is currently ignored by Isis viewers.
+     * </p>
+     */
+    CssClassFaPosition cssClassFaPosition() default CssClassFaPosition.LEFT;
+
+    enum CssClassFaPosition {
+        LEFT, RIGHT
+    }
+
+    // //////////////////////////////////////
+
+    /**
+     * Description of this class, eg to be rendered in a tooltip.
+     */
+    String describedAs() default "";
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Name of this class (overriding the name derived from its name in code).
+     */
+    String named() default "";
+
+
+    // //////////////////////////////////////
+
+    /**
+     * The page size for instances of this class when rendered within
+     * a table.
+     *
+     * <p>
+     * If annotated on a collection, then the page size refers to
+     * parented collections (eg <tt>Order#lineItems</tt>).
+     *
+     * <p>
+     * If annotated on a type, then the page size refers to standalone
+     * collections (eg as returned from a repository query).
+     */
+    int paged() default -1;
+
+
+    // //////////////////////////////////////
+
+    /**
+     * The plural name of the class.
+     */
+    String plural() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Whether (and how) this domain object can be bookmarked in the UI.
+     */
+    BookmarkPolicy bookmarking() default BookmarkPolicy.NOT_SPECIFIED;
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainService.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainService.java
new file mode 100644
index 0000000..450b3fb
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainService.java
@@ -0,0 +1,95 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.inject.Singleton;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * Indicates that the class should be automatically recognized as a domain service.
+ *
+ * <p>
+ * Also indicates whether the domain service acts as a repository for an entity, and menu ordering UI hints.
+ * </p>
+ * 
+ * @apiNote Meta annotation {@link Service} allows for the Spring framework to pick up (discover) the 
+ * annotated type. 
+ * For more details see {@link org.apache.isis.config.beans.IsisBeanFactoryPostProcessorForSpring}.
+ * 
+ */
+@Inherited
+@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Service @Singleton
+public @interface DomainService {
+
+    /**
+     * Provides the (first part of the) unique identifier (OID) for the service (the instanceId is always &quot;1&quot;).
+     *
+     * <p>
+     * If not specified then either the optional &quot;getId()&quot is used, otherwise the class' name.
+     */
+    String objectType() default "";
+
+
+    /**
+     * If this domain service acts as a repository for an entity type, specify that entity type.
+     */
+    Class<?> repositoryFor() default Object.class;
+
+    /**
+     * The nature of this service, eg for menus, contributed actions, repository.
+     */
+    NatureOfService nature() default NatureOfService.VIEW;
+
+    //TODO[2140] deprecated, remove?
+    //    /**
+    //     * Number in Dewey Decimal format representing the order.
+    //     *
+    //     * <p>
+    //     * Same convention as {@link MemberOrder#sequence()}.  If not specified, placed after any named.
+    //     * </p>
+    //     *
+    //     * <p>
+    //     *     Either this attribute or {@link DomainServiceLayout#menuOrder()} can be used; they are equivalent.
+    //     *     Typically this attribute is used for services with a {@link #nature() nature} of
+    //     *     {@link NatureOfService#DOMAIN domain} (these are not visible in the UI) whereas
+    //     *     {@link DomainServiceLayout#menuOrder()} is used for services with a nature of
+    //     *     {@link NatureOfService#VIEW_MENU_ONLY} (which do appear in the UI)
+    //     * </p>
+    //     *
+    //     * <p>
+    //     *     The default value is set to "Integer.MAX_VALUE - 100" so that any domain services intended to override the
+    //     *     default implementations provided by the framework itself will do so without having to specify the
+    //     *     menuOrder (with the exception of <tt>EventBusServiceJdo</tt>, all framework implementations have a
+    //     *     default order greater than Integer.MAX_VALUE - 50).
+    //     * </p>
+    //     */
+    //    String menuOrder() default Constants.MENU_ORDER_DEFAULT  ;
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainServiceLayout.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainServiceLayout.java
new file mode 100644
index 0000000..abc7fc1
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/DomainServiceLayout.java
@@ -0,0 +1,81 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Layout hints for domain services.
+ *
+ * <p>
+ * Also indicates the name, and menu ordering UI hints.
+ * </p>
+ */
+@Inherited
+@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DomainServiceLayout {
+
+    /**
+     * Name of this class (overriding the name derived from its name in code).
+     */
+    String named() default "";
+
+    public enum MenuBar {
+        PRIMARY,
+        SECONDARY,
+        TERTIARY,
+        NOT_SPECIFIED
+    }
+
+    /**
+     * The menubar in which the menu that holds this service's actions should reside.
+     */
+    MenuBar menuBar() default MenuBar.NOT_SPECIFIED;
+
+    //TODO[2140] DomainServiceLayout 
+    //    /**
+    //     * Number in Dewey Decimal format representing the order.
+    //     *
+    //     * <p>
+    //     * Same convention as {@link org.apache.isis.applib.annotation.MemberOrder#sequence()}.  If not specified, placed after any named.
+    //     * </p>
+    //     *
+    //     * <p>
+    //     *     Either this attribute or {@link DomainService#menuOrder()} can be used; they are equivalent.
+    //     *     Typically this attribute is used for services with a {@link DomainService#nature() nature} of
+    //     *     {@link NatureOfService#VIEW_MENU_ONLY} (these are visible in the UI) whereas
+    //     *     {@link DomainService#menuOrder()} is used for services with a nature of
+    //     *     {@link NatureOfService#DOMAIN domain} (which do not appear in the UI).
+    //     * </p>
+    //     *
+    //     * <p>
+    //     *     The default value is set to "Integer.MAX_VALUE - 100" so that any domain services intended to override the
+    //     *     default implementations provided by the framework itself will do so without having to specify the
+    //     *     menuOrder (with the exception of <tt>EventBusServiceJdo</tt>, all framework implementations have a
+    //     *     default order greater than Integer.MAX_VALUE - 50).
+    //     * </p>
+    //     */
+    //    String menuOrder() default Constants.MENU_ORDER_DEFAULT;
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Editing.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Editing.java
new file mode 100644
index 0000000..73bd187
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Editing.java
@@ -0,0 +1,47 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * The available policies for editing properties and collections.
+ */
+public enum Editing {
+    /**
+     * The editing of the object should be as per the default editing policy configured in <tt>isis.properties</tt>.
+     *
+     * <p>
+     *     If no editing policy is configured, then the editing is enabled.
+     * </p>
+     */
+    AS_CONFIGURED,
+    /**
+     * Audit changes to this object.
+     */
+    ENABLED,
+    /**
+     * Do not allow the properties to be edited, or the collections to be added to/removed from.
+     */
+    DISABLED,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/EqualByContent.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/EqualByContent.java
new file mode 100644
index 0000000..afaf0ad
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/EqualByContent.java
@@ -0,0 +1,64 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+
+/**
+ * Indicates that the class follows the equal-by-content contract, usually
+ * associated with {@link Value value} types.
+ *
+ * <p>
+ * If a class claims to be equal-by-content then its {@link #equals(Object)}
+ * should return <tt>true</tt> if its content (as opposed to identity) is the
+ * same. For example, {@link String}, {@link BigDecimal} and {@link Date} follow
+ * this contract.
+ *
+ * <p>
+ * Note also that the Java Language Specification requires that two objects that
+ * are {@link #equals(Object) equal} must return the same value from
+ * {@link #hashCode()}. Failure to do this means that that the object will not
+ * behave correctly when used as a key into a hashing structure (eg a
+ * {@link HashMap}).
+ *
+ * <p>
+ * By default any {@link Value value} types are assumed to follow the
+ * equal-by-content rule, though this can be overridden if required.
+ * Value types are usually also immutable (though there are some classic
+ * exceptions to this, such as {@link Date}).
+ *
+ * @see Value
+ *
+ * <p>
+ *     Note: This annotation is only incompletely recognized by the framework, and may be deprecated in the future.
+ * </p>
+ */
+@Inherited
+@Target({ ElementType.TYPE, ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EqualByContent {
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Facets.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Facets.java
new file mode 100644
index 0000000..804ca3f
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Facets.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that the class has additional facets, and specifies the how to
+ * obtain the <tt>FacetFactory</tt> to manufacture them.
+ *
+ * <p>
+ * At least one named factory (as per {@link #facetFactoryNames()}) or one class
+ * factory (as per {@link #facetFactoryClasses()}) should be specified.
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Facets {
+    /**
+     * Array of fully qualified names of classes each implementing
+     * <tt>org.apache.isis.metamodel.facets.FacetFactory</tt>.
+     *
+     * <p>
+     * Either the array provided by this method or by
+     * {@link #facetFactoryClasses()} should be non-empty.
+     */
+    String[] facetFactoryNames() default {};
+
+    /**
+     * Array of {@link Class}s, each indicating a class implementing
+     * <tt>org.apache.isis.metamodel.facets.FacetFactory</tt>.
+     *
+     * <p>
+     * Either the array provided by this method or by
+     * {@link #facetFactoryNames()} should be non-empty.
+     */
+    Class<?>[] facetFactoryClasses() default {};
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/HomePage.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/HomePage.java
new file mode 100644
index 0000000..05b4954
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/HomePage.java
@@ -0,0 +1,46 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.ViewModel;
+
+/**
+ * Indicates that the (no-arg) action (on a domain service) to be invoked automatically
+ * and the contents used for the home page.
+ *
+ * <p>
+ * Typically this action would return a {@link ViewModel} representing a dashboard
+ * (from which the user can navigate to commonly used objects and invoked actions);
+ * it might also simply invoke an action that returns a list.
+ * <p>
+ * Might also be placed on a type typically a {@link ViewModel} to be used as the home page.
+ * 
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface HomePage {
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/LabelPosition.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/LabelPosition.java
new file mode 100644
index 0000000..99abea8
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/LabelPosition.java
@@ -0,0 +1,48 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The positioning of a label for a property or action parameter.
+ *
+ * @see org.apache.isis.applib.annotation.PropertyLayout
+ * @see org.apache.isis.applib.annotation.ParameterLayout
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum LabelPosition {
+    DEFAULT,
+    LEFT,
+
+    /**
+     * Right position of the label for Boolean properties.
+     * <strong>Not supported</strong> for now for other types.
+     */
+    RIGHT,
+    TOP,
+    NONE,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MemberOrder.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MemberOrder.java
new file mode 100644
index 0000000..659f1a2
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MemberOrder.java
@@ -0,0 +1,59 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates the position a method should be placed in.
+ *
+ * <p>
+ *     An alternative is to use the <code>Xxx.layout.xml</code> file, 
+ *     where <code>Xxx</code> is the domain object name.
+ * </p>
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.FIELD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MemberOrder {
+
+    /**
+     * Groups or associate members with each other.
+     *
+     * <ul>
+     *     <li>For actions, indicates the property or collection to associate.</li>
+     *     <li>For properties, indicates the property group</li>
+     *     <li>For collections, currently has no meaning</li>
+     * </ul>
+     */
+    String name() default "";
+
+    /**
+     * The order of this member relative to other members in the same group, in
+     * Dewey-decimal notation.  For collections this is relative to each other
+     * (collections aren't grouped).
+     */
+    String sequence();
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MementoSerialization.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MementoSerialization.java
new file mode 100644
index 0000000..9f79818
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MementoSerialization.java
@@ -0,0 +1,43 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * Whether the property or collection is included if the domain object is serialized into a memento.
+ */
+public enum MementoSerialization {
+    /**
+     * Property or collection is included in any mementos.
+     * This is the fallback/default if not explicitly excluded.
+     */
+    INCLUDED,
+    /**
+     * Property or collection's state is excluded from any mementos.
+     *
+     * <p>
+     *     Corresponds to <tt>@Property(notPersisted=true)</tt> or <tt>@Collection(notPersisted=true)</tt> prior to Isis 2.x
+     * </p>
+     */
+    EXCLUDED,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MinLength.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MinLength.java
new file mode 100644
index 0000000..77bba48
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/MinLength.java
@@ -0,0 +1,37 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Specify the minimum number of characters for an autocomplete search argument.
+ */
+@Inherited
+@Target({ ElementType.PARAMETER })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MinLength {
+
+    int value();
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Mixin.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Mixin.java
new file mode 100644
index 0000000..7568045
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Mixin.java
@@ -0,0 +1,68 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * An object that acts as a mix-in to some other object, contributing behaviour and/or derived state based on the
+ * domain object.
+ * 
+ * @apiNote Meta annotation {@link Component} allows for the Spring framework to pick up (discover) the 
+ * annotated type. 
+ * For more details see {@link org.apache.isis.config.beans.IsisBeanFactoryPostProcessorForSpring}.
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface Mixin {
+
+    /**
+     * The default of {@link Mixin#method()}).
+     */
+    String DEFAULT_METHOD_NAME = "$$";
+
+    /**
+     * Specifies the name of the verb to use within the mixin, eg "exec", "invoke", "apply" and so on,
+     *
+     * <p>
+     *     This makes it easier to avoid silly spelling mistakes in supporting methods, with the name of the member
+     *     in essence specified in only just one place, namely the mixin class' name.
+     * </p>
+     *
+     * <p>
+     *     If not specified, then the default value {@link #DEFAULT_METHOD_NAME} is used instead.
+     * </p>
+     *
+     * <p>
+     *     Remarks: originally intended to use a single (or perhaps two) underscore, however these may will not be
+     *     valid identifiers after Java 8.
+     * </p>
+     */
+    String method() default DEFAULT_METHOD_NAME;
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Module.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Module.java
new file mode 100644
index 0000000..7b7887f
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Module.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * Intended to be annotated on the root marker class of a (Maven) module which contains a single coherent set of
+ * functionality, possibly including domain services.
+ *
+ * <p>
+ * A {@link Module @Module} (because it's a meta-annotation) is also a Spring {@link Configuration @Configuration},
+ * which means that the functionality can be depended upon transitively using Spring's {@link Import @Import}
+ * annotation. Normally the import graph mirrors the dependencies in Maven.
+ * </p>
+ *
+ * <p>
+ * Also, a {@link Module @Module} also declares the Spring {@link ComponentScan @ComponentScan} (with no parameters),
+ * which means that any domain services in the same package or subpackages are automatically found and registered.
+ * </p>
+ *
+ * @implNote - there are possible performance implications from using this annotation, because it may result in
+ *             scanning more classes than are needed.  It is therefore not used within the framework code, but is
+ *             provided as a convenience by domain applications.
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Configuration
+@Documented
+@ComponentScan
+public @interface Module {
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Nature.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Nature.java
new file mode 100644
index 0000000..4ffa704
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Nature.java
@@ -0,0 +1,112 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * The different sorts of domain objects recognized by Isis.
+ *
+ * <p>
+ *     Note that {@link #EXTERNAL_ENTITY} and {@link #VIEW_MODEL} are implemented identically internally; the
+ *     difference is one of intent.
+ * </p>
+ */
+public enum Nature {
+
+    /**
+     * The default; allows the programmer to combine <tt>@DomainObject</tt> annotation with the
+     * {@link ViewModel} annotation, or the {@link XmlRootElement} annotation, or by implementing the
+     * {@link org.apache.isis.applib.ViewModel} interface.
+     */
+    NOT_SPECIFIED,
+
+    /**
+     * A domain entity whose persistence is managed internally by Isis, using JDO as the persistence implementation.
+     * Domain entities are considered to be part of the domain model layer.
+     *
+     * <p>
+     *     Domain entities are considered to be part of the domain model layer.
+     * </p>
+     *
+     * <p>
+     *    Currently implies no additional semantics other than documentation.
+     * </p>
+     */
+    JDO_ENTITY,
+    /**
+     * A domain entity that is a wrapper/proxy/stub to some externally managed entity.  Domain entities are
+     * considered to be part of the domain model layer.
+     *
+     * <p>
+     *     The identity of an external entity is determined solely by the state of object's properties (that have not
+     *     been set to be ignored using {@link org.apache.isis.applib.annotation.Property#notPersisted()}).
+     * </p>
+     *
+     * <p>
+     *     Note that collections are ignored; if their state is required to fully identify the view model, use
+     *     {@link XmlRootElement} annotation instead.
+     * </p>
+     */
+    EXTERNAL_ENTITY,
+    /**
+     * A domain entity that is a wrapper/proxy/stub to a &quot;synthetic&quot; entity, for example one that is
+     * constructed from some sort of internal memory data structure.
+     *
+     * <p>
+     *     As for a {@link #EXTERNAL_ENTITY}, the identity of a synthetic entity is determined solely by the state of
+     *     object's properties (that have not been set to be ignored using
+     *     {@link org.apache.isis.applib.annotation.Property#notPersisted()}).
+     * </p>
+     *
+     * <p>
+     *     Note that collections are ignored; if their state is required to fully identify the view model, use
+     *     {@link XmlRootElement} annotation instead.
+     * </p>
+     */
+    INMEMORY_ENTITY,
+    /**
+     * An object that is conceptually part of the application layer, and which surfaces behaviour and/or state that
+     * is aggregate of one or more domain entity.
+     *
+     * <p>
+     *     The identity of a view model is determined solely by the state of object's properties (that have
+     *     not been set to be ignored using {@link org.apache.isis.applib.annotation.Property#notPersisted()}).
+     *     Using this nature should be considered exactly equivalent to annotating with {@link ViewModel}.
+     * </p>
+     *
+     * <p>
+     *     Note that collections are ignored; if their state is required to fully identify the view model, define the
+     *     view model using the JAXB {@link XmlRootElement} annotation instead (where the object's state is serialized
+     *     to an arbitrarily deep graph of data, with references to persistent entities transparently resolved to
+     *     <code>&lt;oid-dto&gt;</code> elements).
+     * </p>
+     *
+     * @see ViewModel
+     */
+    VIEW_MODEL,
+
+    /**
+     * An object that acts as a mix-in to some other object, contributing behaviour and/or derived state based on the
+     * domain object.
+     *
+     * @see Mixin
+     */
+    MIXIN
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/NatureOfService.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/NatureOfService.java
new file mode 100644
index 0000000..f02c2aa
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/NatureOfService.java
@@ -0,0 +1,122 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * The different sorts of domain services recognized by Isis, as specified in {@link DomainService#nature()}
+ * 
+ */
+public enum NatureOfService {
+
+    /**
+     * The service's actions appear in the REST API and in 'viewers', eg. in the menu bar.
+     * 
+     * @apiNote
+     * Contributing actions to the 'viewer' implies, that these must also be exposed to the REST API,
+     * simply because alternative viewers might be solely based on the provided REST end-points.  
+     */
+    VIEW,
+
+    /**
+     * The service's actions should only be visible in the REST API exposed by the Restful Objects viewer.
+     */
+    REST,
+    
+    // -- DEPRECATIONS
+
+    /**
+     * A <em>programmatic</em> service.
+     * <p>
+     * The service's actions do not appear on any viewer and are not visible in the REST API. In other words
+     * these are not contributed to the domain-model. However, the service is injectable into domain objects.
+     * </p>
+     *
+     * @deprecated will be removed with 2.0.0 release! use Spring's {@link org.springframework.stereotype.Service @Service} instead;
+     * @apiNote For now, used as synonym for {@link #REST}
+     */
+    @Deprecated
+    DOMAIN,
+
+    /**
+     * @deprecated will be removed with 2.0.0 release! use {@link #REST} instead;
+     * @apiNote For now, used as synonym for {@link #REST}
+     */
+    @Deprecated
+    VIEW_REST_ONLY,
+    
+    /**
+     * @deprecated will be removed with 2.0.0 release! use {@link #VIEW} instead
+     * @apiNote For now, used as synonym for {@link #VIEW}
+     */
+    @Deprecated
+    VIEW_MENU_ONLY,
+    
+    /**
+     * @deprecated will be removed with 2.0.0 release!
+     * <p>
+     * For now, contributing actions will be gathered to show up in the 'others' menu to ease migration. 
+     * These will likely not work.
+     * <p>
+     * Migration Note: For each {@code Action} write a new mixin class. 
+     * see {@link Mixin}
+     * @apiNote For now, used as synonym for {@link #VIEW}
+     */
+    @Deprecated
+    VIEW_CONTRIBUTIONS_ONLY,
+
+    ;
+
+    // -- BASIC PREDICATES
+
+    /**
+     * @see {@link NatureOfService#VIEW}
+     */
+    public boolean isView() {
+        return this == VIEW || this == VIEW_MENU_ONLY  || this == VIEW_CONTRIBUTIONS_ONLY;
+    }
+    
+    /**
+     * Whether a service contributes its actions exclusively to the REST API.
+     * @see {@link NatureOfService#REST}
+     */
+    public boolean isRestOnly() {
+        return this == REST || this == VIEW_REST_ONLY;
+    }
+    
+    /**
+     * Whether a service contributes no actions at all.
+     * @see {@link NatureOfService#DOMAIN}
+     */
+    public boolean isProgrammatic() {
+        return this == DOMAIN;
+    }
+
+    // -- SEMANTIC PREDICATES
+
+    /**
+     * Whether a service contributes its actions (not necessarily exclusive) to the REST API.
+     */
+    public boolean isRestAlso() {
+        return isRestOnly() || isView();
+    }
+
+
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Navigable.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Navigable.java
new file mode 100644
index 0000000..6daac44
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Navigable.java
@@ -0,0 +1,44 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ *
+ * Tells the framework which method or field to use in order to construct a navigable chain of
+ * parent domain object instances. The Navigable.PARENT 'flag' can only be used once per class declaration.
+ *
+ * @since 2.0
+ *
+ */
+public enum Navigable {
+
+
+    NOT_SPECIFIED,
+
+    IGNORE,
+
+    PARENT,
+
+    ;
+
+    public boolean isParent() {
+        return this == PARENT;
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Optionality.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Optionality.java
new file mode 100644
index 0000000..e3efad5
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Optionality.java
@@ -0,0 +1,62 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * Whether the property or parameter is optional or is required (aka mandatory).
+ */
+public enum Optionality {
+    /**
+     * Default, usually meaning mandatory for properties and always meaning mandatory for parameters.
+     *
+     * <p>
+     * For properties, will be false unless JDO {@link javax.jdo.annotations.Column} has also specified with
+     * {@link javax.jdo.annotations.Column#allowsNull()} set to <code>true</code>.
+     * </p>
+     */
+    DEFAULT,
+    /**
+     * Indicates that the property or parameter is not required.
+     */
+    OPTIONAL,
+    /**
+     * Indicates that the property is required (even if the JDO {@link javax.jdo.annotations.Column} annotation
+     * says otherwise).
+     *
+     * <p>
+     * When using the JDO/DataNucleus objectstore, it is sometimes necessary to annotate a property as optional
+     * (using {@link javax.jdo.annotations.Column#allowsNull()} set to <code>true</code>), even if the property is
+     * logically mandatory.  For example, this can occur when the property is in a subtype class that has been
+     * "rolled up" to the superclass table using {@link javax.jdo.annotations.Inheritance} with the
+     * {@link javax.jdo.annotations.InheritanceStrategy#SUPERCLASS_TABLE superclass}<tt> strategy.
+     * </p>
+     *
+     * <p>
+     * This annotation, therefore, is intended to override any objectstore-specific
+     * annotation, so that Isis can apply the constraint even though the objectstore
+     * is unable to do so.
+     * </p>
+     */
+    MANDATORY,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
new file mode 100644
index 0000000..a62cf10
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
@@ -0,0 +1,58 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import org.springframework.core.Ordered;
+
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+public class OrderPrecedence {
+
+    /**
+     * Useful constant for the highest precedence value.
+     *
+     * @see java.lang.Integer#MIN_VALUE
+     * @see Ordered#HIGHEST_PRECEDENCE
+     */
+    public static final int HIGHEST = Ordered.HIGHEST_PRECEDENCE;
+
+    /**
+     * Useful constant for the lowest precedence value.
+     *
+     * @see java.lang.Integer#MAX_VALUE
+     * @see Ordered#LOWEST_PRECEDENCE
+     */
+    public static final int LOWEST = Ordered.LOWEST_PRECEDENCE;
+
+    /**
+     * Used by framework services that are unlikely to be overridden by application code.
+     */
+    public static final int HIGH = HIGHEST / 2;
+    /**
+     * Used by framework services that could be overridden by application code (though not commonly).
+     */
+    public static final int MIDPOINT = 0;
+    /**
+     * Used by framework services that are expected to be overridden by application code, or that act as a fallback.
+     */
+    public static final int LOW = OrderPrecedence.LOWEST / 2;
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Parameter.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Parameter.java
new file mode 100644
index 0000000..718908c
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Parameter.java
@@ -0,0 +1,107 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.spec.Specification;
+import org.apache.isis.applib.value.Blob;
+import org.apache.isis.applib.value.Clob;
+
+/**
+ * Domain semantics for domain object collection.
+ */
+@Inherited
+@Target({ ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Parameter {
+
+
+
+    /**
+     * The maximum entry length of a field.
+     *
+     * <p>
+     *     The default value (<code>-1</code>) indicates that no maxLength has been specified.
+     * </p>
+     */
+    int maxLength() default -1;
+
+
+
+    /**
+     * Whether this parameter is optional or is mandatory (ie required).
+     *
+     * <p>
+     *     For parameters the default value, {@link org.apache.isis.applib.annotation.Optionality#DEFAULT}, is taken
+     *     to mean that the parameter is required.
+     * </p>
+     */
+    Optionality optionality() default Optionality.NOT_SPECIFIED;
+
+
+
+    /**
+     * The {@link org.apache.isis.applib.spec.Specification}(s) to be satisfied by this parameter.
+     *
+     * <p>
+     * If more than one is provided, then all must be satisfied (in effect &quot;AND&quot;ed together).
+     * </p>
+     */
+    Class<? extends Specification>[] mustSatisfy() default {};
+
+
+
+    /**
+     * Regular expression pattern that a value should conform to, and can be formatted as.
+     */
+    String regexPattern() default "";
+
+    /**
+     * Pattern flags, as per {@link java.util.regex.Pattern#compile(String, int)} .
+     *
+     * <p>
+     *     The default value, <code>0</code>, means that no flags have been specified.
+     * </p>
+     */
+    int regexPatternFlags() default 0;
+
+    /**
+     * Replacement text for the pattern in generated error message.
+     */
+    String regexPatternReplacement() default "Doesn't match pattern";
+
+
+    /**
+     * For uploading {@link Blob} or {@link Clob}, optionally restrict the files accepted (eg <tt>.xslx</tt>).
+     *
+     * <p>
+     * The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
+     * </p>
+     *
+     * @see <a href="http://www.w3schools.com/tags/att_input_accept.asp">http://www.w3schools.com</a>
+     */
+    String fileAccept() default "";
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ParameterLayout.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ParameterLayout.java
new file mode 100644
index 0000000..60bf10c
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ParameterLayout.java
@@ -0,0 +1,104 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Layout hints for action parameters.
+ *
+ * @see org.apache.isis.applib.annotation.PropertyLayout
+ */
+@Inherited
+@Target({ ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ParameterLayout {
+
+    /**
+     * Indicates the css class that a parameter should have.
+     */
+    String cssClass() default "";
+
+    /**
+     * Description of this property, eg to be rendered in a tooltip.
+     */
+    String describedAs() default "";
+
+    /**
+     * In forms, positioning of the label (left, top or none) relative to the parameter value.
+     *
+     * <p>
+     * If not specified, the default depends upon the parameter value's datatype.
+     * </p>
+     */
+    LabelPosition labelPosition() default LabelPosition.NOT_SPECIFIED;
+
+    /**
+     * Name of this action parameter.
+     */
+    String named() default "";
+
+    /**
+     * A flag indicating whether the value of {@linkplain #named()} should be HTML escaped or not.
+     */
+    boolean namedEscaped() default true;
+
+    /**
+     * For string parameters (and properties), whether to render as a text area over multiple lines.
+     */
+    int multiLine() default -1;
+
+    /**
+     * For date parameters (and properties) only, instructs the viewer that the date should be rendered as one day
+     * prior to the actually stored date.
+     *
+     * <p>
+     * This is intended to be used so that an exclusive end date of an interval
+     * can be rendered as 1 day before the actual value stored.
+     * </p>
+     *
+     * <p>
+     * For example:
+     * </p>
+     * <pre>
+     * public void updateDates(
+     *     &#64;ParameterLayout(named="From") LocalDate startDate,
+     *     &#64;ParameterLayout(named="To"), renderDay=RenderDay.AS_DAY_BEFORE) LocalDate endDate) { ... }
+     * </pre>
+     *
+     * <p>
+     * Here, the interval of the [1-may-2013,1-jun-2013) would be rendered as the dates
+     * 1-may-2013 for the start date but using 31-may-2013 (the day before) for the end date.  What is stored
+     * In the domain object, itself, however, the value stored is 1-jun-2013.
+     * </p>
+     */
+    RenderDay renderDay() default RenderDay.NOT_SPECIFIED;
+
+    /**
+     * The typical entry length of a field, use to determine the optimum width for display
+     */
+    int typicalLength() default -1;
+
+}
+
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Programmatic.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Programmatic.java
new file mode 100644
index 0000000..ce61dc7
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Programmatic.java
@@ -0,0 +1,51 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that an property, collection or action is to be called
+ * programmatically and should be ignored from the metamodel.
+ *
+ * <p>
+ * For example, it may be a helper method that needs to be <tt>public</tt> but
+ * that doesn't conform to the requirements of an action (for example, invalid
+ * parameter types).
+ *
+ * <p>
+ * It can also be added to a type, meaning that the type is ignored from the metamodel.
+ * This is intended as a &quot;get out of jail&quot; for any classes from unit tests, say,
+ * that end up on the classpath of integration tests but should otherwise be ignored.
+ *
+ * <p>
+ * This is intended as a replacement for {@link Ignore} (the use of which is
+ * being discouraged because of the name clash with <tt>org.junit.Ignore</tt>).
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.TYPE, ElementType.FIELD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Programmatic {
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Projecting.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Projecting.java
new file mode 100644
index 0000000..ce231ce
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Projecting.java
@@ -0,0 +1,31 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+public enum Projecting {
+
+    /**
+     * The property holds the underlying domain object of which this (view model) object is a projection.
+     */
+    PROJECTED,
+    /**
+     * The property
+     */
+    NOT_SPECIFIED;
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PromptStyle.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PromptStyle.java
new file mode 100644
index 0000000..2c6d6da
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PromptStyle.java
@@ -0,0 +1,91 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * How prompting for new values of a property/arguments for an action should be performed
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum PromptStyle {
+    /**
+     * Prompt using the style configured by <tt>isis.viewer.wicket.promptStyle</tt>.
+     *
+     * <p>
+     *      If no style is configured, then {@link #INLINE} is assumed.
+     * </p>
+     */
+    AS_CONFIGURED,
+    /**
+     * Use a dialog for the prompt.
+     *
+     * <p>
+     *     This will be either modal dialog (same as if {@link #DIALOG_MODAL} was selected) or sidebar (same as if
+     *     {@link #DIALOG_SIDEBAR} was selected) depending on the value of the
+     *     <code>isis.viweer.wicket.dialogMode</code> configuration property.
+     * </p>
+     */
+    DIALOG,
+    /**
+     * Use a dialog for the prompt, rendered in a sidebar.
+     */
+    DIALOG_SIDEBAR,
+    /**
+     * Use a dialog for the prompt, rendered in a modal dialog.
+     */
+    DIALOG_MODAL,
+    /**
+     * Show the form inline, temporarily replacing the rendering of the property.
+     */
+    INLINE,
+    /**
+     * Applies only to actions, show the form inline, invoked as if editing the property.
+     *
+     * <p>Note that:
+     * <ul>
+     * <li>
+     *     Only one such action should have this attribute set per property.  If there are multiple actions, then
+     *     the first one discovered with the attribute is used.
+     * </li>
+     * <li>
+     *     If the property is editable, then this attribute is ignored (and the action is treated as having a prompt style of {@link #INLINE}).
+     * </li>
+     * <li>
+     *     If applied to a property, then is the property's prompt style is simply treated as {@link #INLINE}.
+     * </li>
+     * </ul>
+     * </p>
+     *
+     */
+    INLINE_AS_IF_EDIT,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED;
+
+    public boolean isDialog() { return this == DIALOG || this == DIALOG_MODAL || this == DIALOG_SIDEBAR; }
+    public boolean isInline() { return this == INLINE; }
+    public boolean isInlineAsIfEdit() { return this == INLINE_AS_IF_EDIT; }
+
+    public boolean isInlineOrInlineAsIfEdit() { return this == INLINE || this == INLINE_AS_IF_EDIT; }
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Property.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Property.java
new file mode 100644
index 0000000..bd774db
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Property.java
@@ -0,0 +1,261 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.events.domain.PropertyDomainEvent;
+import org.apache.isis.applib.services.command.CommandDtoProcessor;
+import org.apache.isis.applib.services.command.CommandWithDto;
+import org.apache.isis.applib.services.command.spi.CommandService;
+import org.apache.isis.applib.services.conmap.command.ContentMappingServiceForCommandDto;
+import org.apache.isis.applib.services.conmap.command.ContentMappingServiceForCommandsDto;
+import org.apache.isis.applib.spec.Specification;
+import org.apache.isis.applib.value.Blob;
+import org.apache.isis.applib.value.Clob;
+
+/**
+ * Domain semantics for domain object property.
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+
+//@Action(semantics=SemanticsOf.SAFE)   
+//@ActionLayout(contributed=Contributed.AS_ASSOCIATION)
+@Mixin(method = "prop")
+public @interface Property {
+
+    /**
+     * Indicates that changes to the property that should be posted to the
+     * {@link org.apache.isis.applib.services.eventbus.EventBusService event bus} using a custom (subclass of)
+     * {@link org.apache.isis.applib.events.domain.PropertyDomainEvent}.
+     *
+     * <p>For example:
+     * </p>
+     *
+     * <pre>
+     * public static class StartDateChanged extends PropertyDomainEvent { ... }
+     *
+     * &#64;Property(domainEvent=StartDateChanged.class)
+     * public LocalDate getStartDate() { ...}
+     * </pre>
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends PropertyDomainEvent<?,?>> domainEvent() default PropertyDomainEvent.Default.class;
+
+
+
+
+
+    /**
+     * Indicates where the property is not visible to the user.
+     */
+    Where hidden() default Where.NOT_SPECIFIED;
+
+    /**
+     * If set to {@link Projecting#PROJECTED projected}, then indicates that the owner of this property is a view model
+     * which is a projection of some other entity, and that the property holds a reference to that
+     * &quot;underlying&quot;.
+     *
+     * <p>
+     *     This is used to automatically redirect any bookmarks to the view model (projection) to instead be directed
+     *     at the underlying entity.
+     * </p>
+     *
+     * <p>
+     *     Only one such property should be marked as being a projection with a view model.
+     * </p>
+     */
+    Projecting projecting() default Projecting.NOT_SPECIFIED;
+
+
+
+
+    /**
+     * Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
+     *
+     * <p>
+     *     Note that non-editable objects can nevertheless have actions invoked upon them.
+     * </p>
+     */
+    Editing editing() default Editing.NOT_SPECIFIED;
+
+    /**
+     * If {@link #editing()} is set to {@link Editing#DISABLED},
+     * then the reason to provide to the user as to why this property cannot be edited.
+     */
+    String editingDisabledReason() default "";
+
+
+
+
+
+    /**
+     * Whether the property edit should be reified into a {@link org.apache.isis.applib.services.command.Command} object.
+     */
+    CommandReification command() default CommandReification.NOT_SPECIFIED;
+
+    /**
+     * How the {@link org.apache.isis.applib.services.command.Command Command} object provided by the
+     * {@link org.apache.isis.applib.services.command.CommandContext CommandContext} domain service should be persisted.
+     */
+    CommandPersistence commandPersistence() default CommandPersistence.PERSISTED;
+
+    /**
+     * How the command/property edit should be executed.
+     *
+     * <p>
+     * If the corresponding {@link org.apache.isis.applib.services.command.Command Command} object is persisted,
+     * then its {@link org.apache.isis.applib.services.command.Command#getExecuteIn() invocationType} property
+     * will be set to this value.
+     * </p>
+     */
+    CommandExecuteIn commandExecuteIn() default CommandExecuteIn.FOREGROUND;
+
+
+
+    /**
+     * Whether the property edit should be published.
+     *
+     * <p>
+     * Requires that an implementation of the {@link org.apache.isis.applib.services.publish.PublisherService}
+     * or {@link org.apache.isis.applib.services.publish.PublisherService} is registered with the framework.
+     * </p>
+     */
+    Publishing publishing() default Publishing.NOT_SPECIFIED;
+
+
+    /**
+     * The {@link CommandDtoProcessor} to process this command's DTO.
+     *
+     * <p>
+     *     Specifying a processor requires that the implementation of {@link CommandService} provides a
+     *     custom implementation of {@link org.apache.isis.applib.services.command.Command} that additional extends
+     *     from {@link CommandWithDto}.
+     * </p>
+     *
+     * <p>
+     *     Tprocessor itself is used by {@link ContentMappingServiceForCommandDto} and
+     *     {@link ContentMappingServiceForCommandsDto} to dynamically transform the DTOs.
+     * </p>
+     */
+    Class<? extends CommandDtoProcessor> commandDtoProcessor() default CommandDtoProcessor.class;
+
+
+
+
+    /**
+     * The maximum entry length of a field.
+     *
+     * <p>
+     *     The default value (<code>-1</code>) indicates that no maxLength has been specified.
+     * </p>
+     */
+    int maxLength() default -1;
+
+
+
+
+
+    /**
+     * The {@link org.apache.isis.applib.spec.Specification}(s) to be satisfied by this property.
+     *
+     * <p>
+     * If more than one is provided, then all must be satisfied (in effect &quot;AND&quot;ed together).
+     * </p>
+     */
+    Class<? extends Specification>[] mustSatisfy() default {};
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates whether the property should be included or excluded from mementos.
+     *
+     * <p>
+     *     To ensure that the property is actually not persisted in the objectstore, also annotate with the JDO annotation 
+     *     {@link javax.jdo.annotations.NotPersistent}.
+     * </p>
+     */
+    MementoSerialization mementoSerialization() default MementoSerialization.NOT_SPECIFIED;
+
+
+
+
+
+    /**
+     * Whether this property is optional or is mandatory (ie required).
+     *
+     * <p>
+     *     For properties the default value, {@link org.apache.isis.applib.annotation.Optionality#DEFAULT}, usually
+     *     means that the property is required unless it has been overridden by {@link javax.jdo.annotations.Column}
+     *     with its {@link javax.jdo.annotations.Column#allowsNull() allowsNull()} attribute set to true.
+     * </p>
+     */
+    Optionality optionality() default Optionality.NOT_SPECIFIED;
+
+
+
+
+
+    /**
+     * Regular expression pattern that a value should conform to, and can be formatted as.
+     */
+    String regexPattern() default "";
+
+    /**
+     * Pattern flags, as per {@link java.util.regex.Pattern#compile(String, int)} .
+     *
+     * <p>
+     *     The default value, <code>0</code>, means that no flags have been specified.
+     * </p>
+     */
+    int regexPatternFlags() default 0;
+
+    /**
+     * Replacement text for the pattern in generated error message.
+     */
+    String regexPatternReplacement() default "Doesn't match pattern";
+
+
+
+
+
+    /**
+     * For uploading {@link Blob} or {@link Clob}, optionally restrict the files accepted (eg <tt>.xslx</tt>).
+     *
+     * <p>
+     * The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
+     * </p>
+     *
+     * @see <a href="http://www.w3schools.com/tags/att_input_accept.asp">http://www.w3schools.com</a>
+     */
+    String fileAccept() default "";
+
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PropertyLayout.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PropertyLayout.java
new file mode 100644
index 0000000..edd145d
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PropertyLayout.java
@@ -0,0 +1,143 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Layout hints for properties.
+ *
+ * @see org.apache.isis.applib.annotation.ParameterLayout
+ */
+@Inherited
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Mixin(method = "prop")
+public @interface PropertyLayout {
+
+    /**
+     * Indicates the css class that a property should have.
+     */
+    String cssClass() default "";
+
+    /**
+     * Description of this property, eg to be rendered in a tooltip.
+     */
+    String describedAs() default "";
+
+
+    /**
+     * Indicates where in the UI the property should <i>not</i>not be visible.
+     */
+    Where hidden() default Where.NOT_SPECIFIED;
+
+    /**
+     * In forms, positioning of the label (left, top or none) relative to the property value.
+     *
+     * <p>
+     * If not specified, the default depends upon the property value's datatype.
+     * </p>
+     */
+    LabelPosition labelPosition() default LabelPosition.NOT_SPECIFIED;
+
+    /**
+     * For string properties (and parameters), render as a text area over specified number of lines.
+     */
+    int multiLine() default -1;
+
+    /**
+     * Name of this property (overriding the name derived from its name in code).
+     */
+    String named() default "";
+
+    /**
+     * A flag indicating whether the value of {@linkplain #named()} should be HTML escaped or not.
+     */
+    boolean namedEscaped() default true;
+
+    Navigable navigable() default Navigable.NOT_SPECIFIED;
+
+    /**
+     * How the properties of this domain object are be edited, either {@link PromptStyle#DIALOG dialog} or {@link PromptStyle#INLINE inline}.
+     */
+    PromptStyle promptStyle() default PromptStyle.NOT_SPECIFIED;
+
+    /**
+     * For date properties (and parameters) only, instructs the viewer that the date should be rendered as one day
+     * prior to the actually stored date.
+     *
+     * <p>
+     * This is intended to be used so that an exclusive end date of an interval
+     * can be rendered as 1 day before the actual value stored.
+     * </p>
+     *
+     * <p>
+     * For example:
+     * </p>
+     * <pre>
+     * public LocalDate getStartDate() { ... }
+     *
+     * &#64;PropertyLayout(renderDay=RenderDay.AS_DAY_BEFORE)
+     * public LocalDate getEndDate() { ... }
+     * </pre>
+     *
+     * <p>
+     * Here, the interval of the [1-may-2013,1-jun-2013) would be rendered as the dates
+     * 1-may-2013 for the start date but using 31-may-2013 (the day before) for the end date.  What is stored
+     * In the domain object, itself, however, the value stored is 1-jun-2013.
+     * </p>
+     */
+    RenderDay renderDay() default RenderDay.NOT_SPECIFIED;
+
+    /**
+     * The typical entry length of a field, use to determine the optimum width for display
+     */
+    int typicalLength() default -1;
+
+    /**
+     * Indicates that the value held by the property never changes over time, even when other properties of the object
+     * do change.
+     *
+     * <p>
+     *     Setting this attribute to <tt>RepaintPolicy.NO_REPAINT</tt> is used as a hint to the viewer to not repaint
+     *     the property after an AJAX update of some other property/ies of the object have changed.
+     *     This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.
+     * </p>
+     *
+     * <p>
+     *     Note that for this to work, the viewer will also ensure that none of the property's parent component
+     *     (such as a tab group panel) are re-rendered.
+     * </p>
+     *
+     * <p>
+     *     Design note: we considered implementing this an "immutable" flag on the {@link Property } annotation
+     *     (because this flag is typically appropriate for immutable/unchanging properties of a domain object).
+     *     However, we decided not to do that, on the basis that it might be interpreted as having a deeper impact
+     *     within the framework than simply a hint for rendering.
+     * </p>
+     */
+    Repainting repainting() default Repainting.NOT_SPECIFIED;
+
+}
+
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Publishing.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Publishing.java
new file mode 100644
index 0000000..78afcdc
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Publishing.java
@@ -0,0 +1,46 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * The available policies for publishing changes to the properties of the object.
+ */
+public enum Publishing {
+    /**
+     * The publishing of the object should be as per the default publishing policy configured in <tt>isis.properties</tt>.
+     *
+     * <p>
+     *     If no publishing policy is configured, then the publishing is disabled.
+     * </p>
+     */
+    AS_CONFIGURED,
+    /**
+     * Publish changes to this object.
+     */
+    ENABLED,
+    /**
+     * Do not publish changes to this object (even if otherwise configured to enable publishing).
+     */
+    DISABLED,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PublishingChangeKind.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PublishingChangeKind.java
new file mode 100644
index 0000000..c7f7be7
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/PublishingChangeKind.java
@@ -0,0 +1,25 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+public enum PublishingChangeKind {
+    CREATE,
+    UPDATE,
+    DELETE;
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Redirect.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Redirect.java
new file mode 100644
index 0000000..fe999c8
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Redirect.java
@@ -0,0 +1,49 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The available policies for rendering the next page if the result is the same as the target
+ * (in other words, an action that returns "this").
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum Redirect {
+    /**
+     * As defined by configuration property <code>isis.viewer.wicket.redirectEvenIfSameObject</code>
+     */
+    AS_CONFIGURED,
+
+    /**
+     * Redirect (meaning render a new page) even if the result of the action is the same as the target.
+     */
+    EVEN_IF_SAME,
+
+    /**
+     * Don't redirect if the result is the same as the target, instead just update the existing page.
+     *
+     * <p>
+     *     Of course, a redirect is still performed if the result of the action is different from the target.
+     * </p>
+     */
+    ONLY_IF_DIFFERS,
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/RenderDay.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/RenderDay.java
new file mode 100644
index 0000000..b5b60cd
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/RenderDay.java
@@ -0,0 +1,40 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * How to render days.
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum RenderDay {
+    AS_DAY,
+    /**
+     * Equivalent to <tt>@PropertyLayout(renderAsDayBefore=true)</tt> prior to Isis 2.x
+     */
+    AS_DAY_BEFORE,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED;
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Repainting.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Repainting.java
new file mode 100644
index 0000000..ffc0052
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Repainting.java
@@ -0,0 +1,40 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Whether a component is unchanging and so does not require repainting.
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum Repainting {
+    REPAINT,
+    /**
+     * Equivalent to <tt>@PropertyLayout(unchanging=true)</tt> prior to Isis 2.x
+     */
+    NO_REPAINT,
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/RestrictTo.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/RestrictTo.java
new file mode 100644
index 0000000..801939f
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/RestrictTo.java
@@ -0,0 +1,28 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * Whether an action is restricted to development mode, or available in all.
+ */
+public enum RestrictTo {
+    PROTOTYPING,
+    NO_RESTRICTIONS,
+    NOT_SPECIFIED;
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/SemanticsOf.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/SemanticsOf.java
new file mode 100644
index 0000000..553f2c7
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/SemanticsOf.java
@@ -0,0 +1,143 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import org.apache.isis.applib.util.Enums;
+
+/**
+ * @see <a href="https://isis.apache.org/guides/rgant/rgant.html#_rgant-Action_semantics">Reference Guide</a>
+ */
+public enum SemanticsOf {
+
+    /**
+     * Safe, with no side effects, and caching the returned value when invoked multiple times in the same request.
+     * <ul>
+     * <li>Changes state: <b>No</b></li>
+     * <li>HTTP verb: <b>GET</b></li>
+     * <li>Effect of multiple calls: Will <b>always return the same result</b> each time invoked 
+     * (within a given request scope).</li>
+     * </ul>
+     */
+    SAFE_AND_REQUEST_CACHEABLE,
+
+    /**
+     * Safe, with no side-effects. In other words, a query-only action.
+     * <ul>
+     * <li>Changes state: <b>No</b></li>
+     * <li>HTTP verb: <b>GET</b></li>
+     * <li>Effect of multiple calls: Might result in <b>different results each invocation</b> 
+     * (within a given request scope).</li>
+     * </ul>
+     */
+    SAFE,
+
+    /**
+     * Post-conditions are always the same, irrespective as to how many times called.
+     * <ul>
+     * <li>Changes state: <b>Yes</b></li>
+     * <li>HTTP verb: <b>PUT</b></li>
+     * <li>Effect of multiple calls: Will make <b>no further changes</b> if called multiple times 
+     * (eg sets a property or adds of same item to a Set).</li>
+     * </ul>
+     */
+    IDEMPOTENT,
+
+    /**
+     * Neither safe nor idempotent; every invocation is likely to change the state of the object.
+     * <ul>
+     * <li>Changes state: <b>Yes</b></li>
+     * <li>HTTP verb: <b>POST</b></li>
+     * <li>Effect of multiple calls: Might <b>change the state</b> of the system each time called 
+     * (eg increments a counter or adds to a List).</li>
+     * <li>Example: Increasing the quantity of a line item in an Order by 1.</li>
+     * </ul>
+     */
+    NON_IDEMPOTENT,
+
+    /**
+     * Post-conditions are always the same, irrespective as to how many times called.
+     * <p>
+     * If supported the UI viewer will show a confirmation dialog before executing the action.
+     * <ul>
+     * <li>Changes state: <b>Yes</b></li>
+     * <li>HTTP verb: <b>PUT</b></li>
+     * <li>Effect of multiple calls: Will make <b>no further changes</b> if called multiple times 
+     * (eg sets a property or adds of same item to a Set).</li>
+     * </ul>
+     */
+    IDEMPOTENT_ARE_YOU_SURE,
+
+    /**
+     * Neither safe nor idempotent; every invocation is likely to change the state of the object.
+     * <p>
+     * If supported the UI viewer will show a confirmation dialog before executing the action.
+     * <ul>
+     * <li>Changes state: <b>Yes</b></li>
+     * <li>HTTP verb: <b>POST</b></li>
+     * <li>Effect of multiple calls: Might <b>change the state</b> of the system each time called 
+     * (eg increments a counter or adds to a List).</li>
+     * <li>Example: Increasing the quantity of a line item in an Order by 1.</li>
+     */
+    NON_IDEMPOTENT_ARE_YOU_SURE,
+
+    /**
+     * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+     * annotations or superclasses/interfaces).
+     */
+    NOT_SPECIFIED;
+
+    public String getFriendlyName() {
+        return Enums.getFriendlyNameOf(this);
+    }
+
+    public String getCamelCaseName() {
+        return Enums.enumToCamelCase(this);
+    }
+
+    /**
+     * Any of {@link #SAFE}, {@link #SAFE_AND_REQUEST_CACHEABLE} or (obviously) {@link #IDEMPOTENT}.
+     */
+    public boolean isIdempotentInNature() {
+        return isSafeInNature() || this == IDEMPOTENT || this == IDEMPOTENT_ARE_YOU_SURE;
+    }
+
+    /**
+     * Either of {@link #SAFE} or {@link #SAFE_AND_REQUEST_CACHEABLE}.
+     */
+    public boolean isSafeInNature() {
+        return isSafeAndRequestCacheable() || this == SAFE;
+    }
+
+    /**
+     * @deprecated - use {@link #isSafeInNature()} instead (avoid any ambiguity).
+     */
+    @Deprecated
+    public boolean isSafe() {
+        return isSafeInNature();
+    }
+
+    public boolean isSafeAndRequestCacheable() {
+        return this == SAFE_AND_REQUEST_CACHEABLE;
+    }
+
+    public boolean isAreYouSure() {
+        return this == IDEMPOTENT_ARE_YOU_SURE || this == NON_IDEMPOTENT_ARE_YOU_SURE;
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Title.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Title.java
new file mode 100644
index 0000000..f7c3259
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Title.java
@@ -0,0 +1,57 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * A title annotation used to annotate methods used to construct the title of a
+ * domain object instance. It is used as a marker.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.METHOD, ElementType.FIELD })
+public @interface Title {
+
+    /**
+     * The order (in Dewey decimal notation) that the property annotated with
+     * {@link Title} appears with respect to other properties also annotated
+     * with {@link Title}.
+     */
+    String sequence() default "1.0";
+
+    /**
+     * The string to use to separate this property from any preceding properties
+     * in the title.
+     */
+    String prepend() default " ";
+
+    /**
+     * The string to append to this property if non-empty.
+     */
+    String append() default "";
+
+    /**
+     * The length to abbreviate this title element to.
+     */
+    int abbreviatedTo() default Integer.MAX_VALUE;
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Value.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Value.java
new file mode 100644
index 0000000..36269fa
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Value.java
@@ -0,0 +1,103 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
+import org.apache.isis.commons.internal.encoding.Encodable;
+
+/**
+ * Indicates that the class has value semantics.
+ *
+ * <p>
+ * By &quot;value semantics&quot; all we actually mean that the class is
+ * {@link Aggregated} and so therefore (conceptually) is not shared between
+ * instances of classes. However, values very often have other semantics, and so
+ * this annotation allows these to also be specified:
+ * <li>it may be parseable (as per {@link Parseable})</li>
+ * <li>it may be encodeable (as per {@link Encodable})</li>
+ * <li>it may be immutable (as per {@link Immutable}), and by default is
+ * presumed that it is</li>
+ * <li>it may follow the equal-by-content contract (as per
+ * {@link EqualByContent}), and by default is presumed that it does.</i> </ul>
+ *
+ * <p>
+ * Note also that though a value is conceptually not shared, if it is also
+ * {@link Immutable immutable} then it is in fact safe to share objects (as in
+ * the flyweight pattern). In addition, the {@link EqualByContent} semantic
+ * means that we needn't care whether value types are being shared or not.
+ *
+ * @see Aggregated
+ * @see Parseable
+ * @see Encodable
+ * @see Immutable
+ * @see EqualByContent
+ *
+ * <p>
+ *     Note: This annotation is only incompletely recognized by the framework, and may be deprecated in the future.
+ * </p>
+ */
+@Inherited
+@Target({ ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Value {
+
+    /**
+     * The fully qualified name of a class that implements the
+     * {@link ValueSemanticsProvider} interface.
+     *
+     * <p>
+     * This is optional because some implementations may pick up encodeability
+     * via a configuration file, or via the equivalent
+     * {@link #semanticsProviderClass()}.
+     *
+     * <p>
+     * It is possible for value classes to act as their own semantics providers,
+     * and may in particular implement the {@link EncoderDecoder} interface. The
+     * framework requires that the nominated class provides a <tt>public</tt>
+     * no-arg constructor on the class, and will instantiates an instance of the
+     * class to interact with it. In the case of encoding, the framework uses
+     * the result of discards the instantiated object. What that means in
+     * particular is that a self-encoding class shouldn't encode its own state,
+     * it should encode the state of the object passed to it.
+     *
+     * <p>
+     * Implementation note: the default value provided here is simply an empty
+     * string because <tt>null</tt> is not a valid default.
+     */
+    String semanticsProviderName() default "";
+
+    /**
+     * As per {@link #semanticsProviderName()}, but specifying a class literal
+     * rather than a fully qualified class name.
+     *
+     * <p>
+     * Implementation note: the default value provided here is simply the
+     * {@link Value}'s own class, because <tt>null</tt> is not a valid default.
+     */
+    Class<?> semanticsProviderClass() default Value.class;
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ViewModel.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ViewModel.java
new file mode 100644
index 0000000..3c61bbc
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ViewModel.java
@@ -0,0 +1,63 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * An object that is conceptually part of the application layer, and which surfaces behaviour and/or state that
+ * is aggregate of one or more domain entity.
+ *
+ * <p>
+ *     The identity of a view model is determined solely by the state of object's properties (that have
+ *     not been set to be ignored using {@link org.apache.isis.applib.annotation.Property#notPersisted()}).
+ *     Using this nature should be considered exactly equivalent to annotating with {@link DomainObject#nature()} with
+ *     a nature of {@link Nature#VIEW_MODEL}.
+ * </p>
+ *
+ * <p>
+ *     Note that collections are ignored; if their state is required to fully identify the view model, define the view
+ *     model using the JAXB {@link XmlRootElement} annotation instead (where the object's state is serialized
+ *     to an arbitrarily deep graph of data, with references to persistent entities transparently resolved to
+ *     <code>&lt;oid-dto&gt;</code> elements).
+ * </p>
+ *
+ * @see ViewModel
+ * 
+ * @apiNote Meta annotation {@link Component} allows for the Spring framework to pick up (discover) the 
+ * annotated type. 
+ * For more details see {@link org.apache.isis.config.beans.IsisBeanFactoryPostProcessorForSpring}.
+ */
+@Inherited
+@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface ViewModel {
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ViewModelLayout.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ViewModelLayout.java
new file mode 100644
index 0000000..6db5c3a
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/ViewModelLayout.java
@@ -0,0 +1,171 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.isis.applib.events.ui.CssClassUiEvent;
+import org.apache.isis.applib.events.ui.IconUiEvent;
+import org.apache.isis.applib.events.ui.LayoutUiEvent;
+import org.apache.isis.applib.events.ui.TitleUiEvent;
+
+/**
+ * Layout hints for view models.
+ *
+ * <p>
+ *     This is intended for use with UI/application-layer view models that are specified as such through either
+ *     the {@link org.apache.isis.applib.annotation.ViewModel} annotation or by implementing the
+ *     {@link org.apache.isis.applib.ViewModel} interface.
+ * </p>
+ *
+ * <p>
+ *      Note that the attributes are the same as {@link org.apache.isis.applib.annotation.DomainObjectLayout}; it
+ *      captures the same information.  This annotation is provided for symmetry; most view models will be annotated
+ *      with just <tt>@ViewModel</tt> and <tt>@ViewModelLayout</tt>.
+ * </p>
+ */
+@Inherited
+@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ViewModelLayout {
+
+    /**
+     * Which subclass of {@link TitleUiEvent} should be used to obtain a title.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends TitleUiEvent<?>> titleUiEvent() default TitleUiEvent.Default.class;
+
+    // //////////////////////////////////////
+
+    /**
+     * Which subclass of {@link IconUiEvent} should be used to obtain an icon.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends IconUiEvent<?>> iconUiEvent() default IconUiEvent.Default.class;
+
+    // //////////////////////////////////////
+
+    /**
+     * Which subclass of {@link CssClassUiEvent} should be used to obtain a CSS class.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends CssClassUiEvent<?>> cssClassUiEvent() default CssClassUiEvent.Default.class;
+
+    // //////////////////////////////////////
+
+    /**
+     * Which subclass of {@link LayoutUiEvent} should be used to obtain a layout.
+     *
+     * <p>
+     * This subclass must provide a no-arg constructor; the fields are set reflectively.
+     * </p>
+     */
+    Class<? extends LayoutUiEvent<?>> layoutUiEvent() default LayoutUiEvent.Default.class;
+
+
+    /**
+     * Indicates the css class that a domain class (type) should have.
+     */
+    String cssClass() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Indicates the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a> CSS class to decorate an
+     * domain object.
+     */
+    String cssClassFa() default "";
+
+    /**
+     * Indicates the position of the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a>
+     * icon. The icon could be rendered on the left or the right of the object's title.
+     *
+     * <p>
+     *     This attribute is currently ignored by Isis viewers.
+     * </p>
+     */
+    CssClassFaPosition cssClassFaPosition() default CssClassFaPosition.LEFT;
+
+    enum CssClassFaPosition {
+        LEFT, RIGHT
+    }
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Description of this class, eg to be rendered in a tooltip.
+     */
+    String describedAs() default "";
+
+
+    // //////////////////////////////////////
+
+    /**
+     * Name of this class (overriding the name derived from its name in code).
+     */
+    String named() default "";
+
+
+    // //////////////////////////////////////
+
+    /**
+     * The page size for instances of this class when rendered within
+     * a table.
+     *
+     * <p>
+     * If annotated on a collection, then the page size refers to
+     * parented collections (eg <tt>Order#lineItems</tt>).
+     *
+     * <p>
+     * If annotated on a type, then the page size refers to standalone
+     * collections (eg as returned from a repository query).
+     */
+    int paged() default -1;
+
+
+    // //////////////////////////////////////
+
+    /**
+     * The plural name of the class.
+     */
+    String plural() default "";
+
+    // //////////////////////////////////////
+
+    /**
+     * Whether (and how) this domain object can be bookmarked in the UI.
+     */
+    BookmarkPolicy bookmarking() default BookmarkPolicy.NOT_SPECIFIED;
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Where.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Where.java
new file mode 100644
index 0000000..497b111
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/Where.java
@@ -0,0 +1,172 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.annotation;
+
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.util.Enums;
+
+/**
+ * Represents the location in the user interface where a class member is to be rendered.
+ *
+ * <p>
+ * Used to control visibility (eg using the {@link Hidden} annotation) and enablement
+ * (eg using the {@link Disabled} annotation) in different regions of the user interface.
+ *
+ * <p>
+ * The application programmer may use any of the values of this enum.  Some represent
+ * concrete locations (eg {@link #OBJECT_FORMS}, {@link #PARENTED_TABLES}), whereas some
+ * represent a combination of locations (eg {@link #ALL_TABLES}, {@link #ANYWHERE}).
+ *
+ * <h4>Framework Implementation Notes</h4>
+ * <p>
+ * This enum is also used internally within the framework.  When rendering an element,
+ * the framework developer should only use those values that represent concrete locations.
+ */
+@XmlType(
+        namespace = "http://isis.apache.org/applib/layout/component"
+        )
+public enum Where {
+    /**
+     * The member should be disabled/hidden everywhere.
+     *
+     * <p>
+     * Synonym for {@link #ANYWHERE}.
+     */
+    EVERYWHERE {
+        @Override
+        public boolean includes(Where context) {
+            return true;
+        }
+    },
+    /**
+     * The member should be disabled/hidden everywhere.
+     *
+     * <p>
+     * Synonym for {@link #EVERYWHERE}.
+     */
+    ANYWHERE {
+        @Override
+        public boolean includes(Where context) {
+            return true;
+        }
+    },
+    /**
+     * The member should be disabled/hidden when displayed within an object form.
+     *
+     * <p>
+     * For most viewers, this applies to property and collection members, not actions.
+     */
+    OBJECT_FORMS,
+    /**
+     * The member should be disabled/hidden when displayed as a column of a table
+     * within parent object's collection, and references that parent.
+     *
+     * <p>
+     * For most (all?) viewers, this will have meaning only if applied to a property member.
+     */
+    REFERENCES_PARENT,
+    /**
+     * The member should be disabled/hidden when displayed as a column of a table within
+     * a parent object's collection.
+     *
+     * <p>
+     * For most (all?) viewers, this will have meaning only if applied to a property member.
+     */
+    PARENTED_TABLES ,
+    /**
+     * The member should be disabled/hidden when displayed as a column of a table showing a standalone list
+     * of objects, for example as returned by a repository query.
+     *
+     * <p>
+     * For most (all?) viewers, this will have meaning only if applied to a property member.
+     */
+    STANDALONE_TABLES,
+    /**
+     * The member should be disabled/hidden when displayed as a column of a table, either an object's
+     * collection or a standalone list.
+     *
+     * <p>
+     * This combines {@link #PARENTED_TABLES} and {@link #STANDALONE_TABLES}.
+     */
+    ALL_TABLES {
+        @Override
+        public boolean includes(Where context) {
+            return context == this || context == PARENTED_TABLES || context == STANDALONE_TABLES;
+        }
+    },
+    /**
+     * The member should be disabled/hidden except when displayed as a column of a standalone table.
+     *
+     * <p>
+     * This is the inverse of {@link #STANDALONE_TABLES}.
+     */
+    ALL_EXCEPT_STANDALONE_TABLES {
+        @Override
+        public boolean includes(Where context) {
+            return context != STANDALONE_TABLES;
+        }
+    },
+    /**
+     * To act as an override if a member would normally be hidden as a result of some other convention.
+     *
+     * <p>
+     * For example, if a property is annotated with <tt>@Title</tt>, then normally this should be hidden
+     * from all tables.  Additionally annotating with <tt>@Hidden(where=Where.NOWHERE)</tt> overrides this.
+     */
+    NOWHERE {
+        @Override
+        public boolean includes(Where context) {
+            return false;
+        }
+    },
+    /**
+     * Acts as the default no-op value for {@link PropertyLayout#hidden()}, {@link CollectionLayout#hidden()} and {@link ActionLayout#hidden()}.
+     */
+    NOT_SPECIFIED {
+        @Override
+        public boolean includes(Where context) {
+            return false;
+        }
+    };
+
+    public String getFriendlyName() {
+        return Enums.getFriendlyNameOf(this);
+    }
+
+    public boolean inParentedTable() {
+        return this == PARENTED_TABLES || this == ALL_TABLES;
+    }
+
+    public boolean inStandaloneTable() {
+        return this == STANDALONE_TABLES || this == ALL_TABLES;
+    }
+
+    /**
+     * Whether this <tt>Where</tt> is a superset of the context <tt>Where</tt> provided.
+     *
+     * <p>
+     * For example, {@link #ALL_TABLES} includes {@link #STANDALONE_TABLES}; {@link #ANYWHERE} includes all others.
+     */
+    public boolean includes(Where context) {
+        return context == this;
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/package-info.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/package-info.java
new file mode 100644
index 0000000..1b64fdd
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/package-info.java
@@ -0,0 +1,23 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+/**
+ *
+ */
+package org.apache.isis.applib.annotation;
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/.gitignore b/core/applib/src/main/doc/modules/applib-cm/examples/.gitignore
deleted file mode 100644
index 654617b..0000000
--- a/core/applib/src/main/doc/modules/applib-cm/examples/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-**/*
-!.gitignore
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/clock/Clock.java b/core/applib/src/main/doc/modules/applib-cm/examples/clock/Clock.java
new file mode 100644
index 0000000..8b5c47a
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/clock/Clock.java
@@ -0,0 +1,142 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.clock;
+
+import java.sql.Timestamp;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.util.Date;
+
+import lombok.val;
+
+/**
+ * Provides a mechanism to get (and possible to set) the current time.
+ *
+ * <p>
+ * The clock is used primarily by the temporal value classes, and is accessed by
+ * the NOF as a singleton. The actual implementation used can be configured at
+ * startup, but once specified the clock instance cannot be changed.
+ *
+ * <p>
+ * Unless another {@link Clock} implementation has been installed, the first
+ * call to {@link #getInstance()} will instantiate an implementation that just
+ * uses the system's own clock. Alternate implementations can be created via
+ * suitable subclasses, but this must be done <b><i>before</i></b> the first
+ * call to {@link #getInstance()}. 
+ */
+public abstract class Clock {
+    
+    protected static Clock instance;
+
+    /**
+     * Returns the (singleton) instance of {@link Clock}.
+     *
+     * <p>
+     * Unless it has been otherwise created, will lazily instantiate an
+     * implementation that just delegate to the computer's own system clock (as
+     * per {@link System#currentTimeMillis()}.
+     *
+     * @return
+     */
+    public final static Clock getInstance() {
+        if (!isInitialized()) {
+            instance = new SystemClock();
+        }
+        return instance;
+    }
+
+    /**
+     * Whether has been initialized or not.
+     */
+    public static boolean isInitialized() {
+        return instance != null;
+    }
+
+    /**
+     * The time as the number of milliseconds since the epoch start. (UTC)
+     *
+     * @see Date#getTime()
+     */
+    public static long getEpochMillis() {
+        return getInstance().now().toEpochMilli();
+    }
+
+    public static LocalDate getTimeAsLocalDate() {
+        return getTimeAsLocalDateTime().toLocalDate();
+    }
+
+    public static LocalDateTime getTimeAsLocalDateTime() {
+        val zoneId = ZoneId.systemDefault();
+        return LocalDateTime.ofInstant(getInstance().now(), zoneId);
+    }
+
+    /**
+     * Returns the {@link #getTime() time} as {@link OffsetDateTime},
+     * using the {@link ZoneId.systemDefault()} timezone.
+     */
+    public static OffsetDateTime getTimeAsOffsetDateTime() {
+        val zoneId = ZoneId.systemDefault();
+        return OffsetDateTime.ofInstant(getInstance().now(), zoneId);
+    }
+
+
+    public static Timestamp getTimeAsJavaSqlTimestamp() {
+        return new java.sql.Timestamp(getEpochMillis());
+    }
+
+
+    /**
+     * Allows subclasses to remove their implementation.
+     *
+     * @return whether a clock was removed.
+     */
+    protected static boolean remove() {
+        if (instance == null) {
+            return false;
+        }
+        instance = null;
+        return true;
+    }
+
+    protected Clock() {
+        instance = this;
+    }
+
+
+    /**
+     * The current time represented by an instant, either measured or simulated.
+     */
+    protected abstract Instant now();
+
+
+}
+
+final class SystemClock extends Clock {
+
+    SystemClock() {}
+    
+    @Override
+    protected Instant now() {
+        return Instant.now();
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/clock/package-info.java b/core/applib/src/main/doc/modules/applib-cm/examples/clock/package-info.java
new file mode 100644
index 0000000..4bb4e71
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/clock/package-info.java
@@ -0,0 +1,42 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+/**
+ * Defines a {@link org.apache.isis.applib.clock.Clock} singleton
+ * that can be used to obtain the current time.
+ *
+ * <p>
+ * All of the built-in value types relating to time have
+ * {@link org.apache.isis.applib.adapters.ValueSemanticsProvider#getDefaultsProvider() defaults}
+ * that use the {@link org.apache.isis.applib.clock.Clock} singleton.  For
+ * consistency, domain objects and services should also use the Clock.
+ *
+ * <p>
+ * Providing a clock is useful for testing, allowing the "current" time
+ * to be placed under programmatic control (by {@link org.apache.isis.applib.fixtures.FixtureClock#initialize() initializing}
+ * a {@link org.apache.isis.applib.fixtures.FixtureClock}.  Otherwise though
+ * the {@link org.apache.isis.applib.clock.Clock} just uses the time from the
+ * current system.
+ *
+ * <p>
+ * Note: this design also means that other {@link org.apache.isis.applib.clock.Clock}
+ * implementations - such as a one that accesses the time from an NNTP time
+ * daemon - could also be used.
+ */
+package org.apache.isis.applib.clock;
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/domain/DomainObjectList.java b/core/applib/src/main/doc/modules/applib-cm/examples/domain/DomainObjectList.java
new file mode 100644
index 0000000..5d64609
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/domain/DomainObjectList.java
@@ -0,0 +1,179 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.domain;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.isis.applib.IsisModuleApplib;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.jaxbadapters.PersistentEntitiesAdapter;
+import org.apache.isis.commons.internal.collections._Lists;
+
+@XmlRootElement(name = "list")
+@XmlType(
+        propOrder = {
+                "title",
+                "actionOwningType",
+                "actionId",
+                "actionArguments",
+                "elementObjectType",
+                "objects"
+        }
+        )
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+        objectType = "isisApplib.DomainObjectList",
+        editing = Editing.DISABLED,
+        nature = Nature.VIEW_MODEL
+        )
+@DomainObjectLayout(
+        titleUiEvent = DomainObjectList.TitleUiEvent.class,
+        iconUiEvent = DomainObjectList.IconUiEvent.class,
+        cssClassUiEvent = DomainObjectList.CssClassUiEvent.class,
+        layoutUiEvent = DomainObjectList.LayoutUiEvent.class
+        )
+public class DomainObjectList {
+
+    // -- ui event classes
+    public static class TitleUiEvent extends IsisModuleApplib.TitleUiEvent<DomainObjectList>{  }
+    public static class IconUiEvent extends IsisModuleApplib.IconUiEvent<DomainObjectList>{  }
+    public static class CssClassUiEvent extends IsisModuleApplib.CssClassUiEvent<DomainObjectList>{  }
+    public static class LayoutUiEvent extends IsisModuleApplib.LayoutUiEvent<DomainObjectList>{  }
+
+
+    // -- domain event classes
+    public static abstract class PropertyDomainEvent<T> extends IsisModuleApplib.PropertyDomainEvent<DomainObjectList, T> {  }
+    public static abstract class CollectionDomainEvent<T> extends IsisModuleApplib.CollectionDomainEvent<DomainObjectList, T> {  }
+    public static abstract class ActionDomainEvent extends IsisModuleApplib.ActionDomainEvent<DomainObjectList> {  }
+
+
+    // -- constructors
+    public DomainObjectList() {
+    }
+    public DomainObjectList(
+            final String title,
+            final String elementObjectType,
+            final String actionOwningType,
+            final String actionId,
+            final String actionArguments) {
+        this.title = title;
+        this.elementObjectType = elementObjectType;
+        this.actionOwningType = actionOwningType;
+        this.actionId = actionId;
+        this.actionArguments = actionArguments;
+    }
+
+
+    // -- title
+    private String title;
+    public String title() {
+        return title;
+    }
+
+
+    // -- property: elementObjectType
+    public static class ElementObjectTypeDomainEvent extends PropertyDomainEvent<String> {  }
+
+    private String elementObjectType;
+    @Property(
+            domainEvent = ElementObjectTypeDomainEvent.class,
+            editing = Editing.DISABLED
+            )
+    public String getElementObjectType() {
+        return elementObjectType;
+    }
+
+
+    // -- property: actionOwningType
+    public static class ActionOwningTypeDomainEvent extends PropertyDomainEvent<String> {  }
+
+    private String actionOwningType;
+
+    @Property(
+            domainEvent = ActionOwningTypeDomainEvent.class,
+            optionality = Optionality.OPTIONAL,
+            editing = Editing.DISABLED
+            )
+    public String getActionOwningType() {
+        return actionOwningType;
+    }
+
+
+    // -- property: actionId
+    public static class ActionIdDomainEvent extends PropertyDomainEvent<String> {  }
+
+    private String actionId;
+
+    @Property(
+            domainEvent = ActionIdDomainEvent.class,
+            optionality = Optionality.OPTIONAL,
+            editing = Editing.DISABLED
+            )
+    public String getActionId() {
+        return actionId;
+    }
+
+
+    // -- property: actionArguments
+    public static class ActionArgumentsDomainEvent extends PropertyDomainEvent<String> {  }
+
+    private String actionArguments;
+
+    @Property(
+            domainEvent = ActionArgumentsDomainEvent.class,
+            optionality = Optionality.OPTIONAL,
+            editing = Editing.DISABLED
+            )
+    public String getActionArguments() {
+        return actionArguments;
+    }
+
+
+    // -- collection: objects
+    public static class ObjectsDomainEvent extends CollectionDomainEvent<Object> {  }
+
+    @XmlJavaTypeAdapter(PersistentEntitiesAdapter.class)
+    private List<Object> objects = _Lists.newArrayList();
+
+    @Collection(
+            domainEvent = ObjectsDomainEvent.class,
+            editing = Editing.DISABLED
+            )
+    public List<Object> getObjects() {
+        return objects;
+    }
+
+    public void setObjects(final List<Object> objects) {
+        this.objects = objects;
+    }
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/ActionArgumentUsabilityEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/ActionArgumentUsabilityEvent.java
new file mode 100644
index 0000000..a96cc76
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/ActionArgumentUsabilityEvent.java
@@ -0,0 +1,68 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.events;
+
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
+
+/**
+ * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> 
+ * represents a check as to whether a particular argument for an action is disabled
+ * or not.
+ * 
+ * <p>
+ * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
+ * argument's parameter should be disabled; otherwise the parameter can be entered.
+ * 
+ * @deprecated
+ */
+@Deprecated
+public class ActionArgumentUsabilityEvent extends UsabilityEvent {
+
+    private final Object[] args;
+    private final int position;
+
+    public ActionArgumentUsabilityEvent(
+            final Object source, final Identifier actionIdentifier,
+            final Object[] args, final int position) {
+        super(source, actionIdentifier);
+        this.args = args;
+        this.position = position;
+    }
+
+    public Object[] getArgs() {
+        return args;
+    }
+
+    /**
+     * The position (0-based) of the disabled parameter.
+     * 
+     * @return
+     */
+    public int getPosition() {
+        return position;
+    }
+
+    @Override
+    public String getReasonMessage() {
+        return String.format("Invalid action argument. Position: %s. Reason: %s", this.getPosition(), super.getReasonMessage());
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/ActionArgumentVisibilityEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/ActionArgumentVisibilityEvent.java
new file mode 100644
index 0000000..240e097
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/ActionArgumentVisibilityEvent.java
@@ -0,0 +1,67 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.applib.events;
+
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
+
+/**
+ * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents a check as to whether a particular parameter for an action is visible
+ * or not.
+ * 
+ * <p>
+ * If {@link #getReason()} is not <tt>null</tt> then provides the reason why the
+ * argument's parameter should be hidden; otherwise the parameter is shown.
+ * 
+ * @deprecated
+ */
+@Deprecated
+public class ActionArgumentVisibilityEvent extends VisibilityEvent {
+
+    private final Object[] args;
+    private final int position;
+
+    public ActionArgumentVisibilityEvent(
+            final Object source, final Identifier actionIdentifier,
+            final Object[] args, final int position) {
+        super(source, actionIdentifier);
+        this.args = args;
+        this.position = position;
+    }
+
+    public Object[] getArgs() {
+        return args;
+    }
+
+    /**
+     * The position (0-based) of the hidden parameter.
+     * 
+     * @return
+     */
+    public int getPosition() {
+        return position;
+    }
+
+    @Override
+    public String getReasonMessage() {
+        return String.format("Invalid action argument. Position: %s. Reason: %s", this.getPosition(), super.getReasonMessage());
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/AbstractDomainEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/AbstractDomainEvent.java
new file mode 100644
index 0000000..b3bfd81
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/AbstractDomainEvent.java
@@ -0,0 +1,346 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.domain;
+
+import java.util.Map;
+
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
+import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+
+public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
+
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     * <p>
+     *     Because the {@link EventObjectBase} superclass prohibits a null source, 
+     *     a dummy value is temporarily used.
+     * </p>
+     */
+    public AbstractDomainEvent() {
+        this(null, null);
+    }
+
+    public AbstractDomainEvent(
+            final S source,
+            final Identifier identifier) {
+        super(source);
+        this.identifier = identifier;
+    }
+
+    // - mixedIn
+
+    private Object mixedIn;
+
+    /**
+     * Populated only for mixins; holds the underlying domain object that the mixin contributes to.
+     */
+    public Object getMixedIn() {
+        return mixedIn;
+    }
+    /**
+     * Not API - set by the framework.
+     */
+    public void setMixedIn(final Object mixedIn) {
+        this.mixedIn = mixedIn;
+    }
+
+
+
+    // -- Subject
+
+    /**
+     * The subject of the event, which will be either the {@link #getSource() source} for a regular action, or the
+     * {@link #getMixedIn() mixed-in} domain object for a mixin.
+     */
+    public Object getSubject() {
+        final Object mixedIn = getMixedIn();
+        return mixedIn != null ? mixedIn : getSource();
+    }
+
+
+
+    // -- Phase
+
+    public enum Phase {
+        HIDE,
+        DISABLE,
+        VALIDATE,
+        EXECUTING,
+        EXECUTED;
+
+        /**
+         * The significance being that at this point the proposed values/arguments are known, and so the event can be
+         * fully populated.
+         */
+        public boolean isValidatingOrLater() {
+            return this == VALIDATE || isExecutingOrLater();
+        }
+
+        /**
+         * When the {@link org.apache.isis.applib.services.command.Command} is made available on the {@link org.apache.isis.applib.events.domain.ActionDomainEvent}
+         * via {@link org.apache.isis.applib.events.domain.ActionDomainEvent#getCommand()}.
+         */
+        public boolean isExecutingOrLater() {
+            return isExecuting() || isExecuted();
+        }
+
+        public boolean isExecuting() {
+            return this == EXECUTING;
+        }
+
+        public boolean isExecuted() {
+            return this == EXECUTED;
+        }
+    }
+
+    private Phase phase;
+
+    /**
+     * Whether the framework is checking visibility, enablement, validity or actually executing (invoking action,
+     * updating property or collection).
+     */
+    public Phase getEventPhase() {
+        return phase;
+    }
+
+    /**
+     * Not API, set by the framework.
+     */
+    public void setEventPhase(Phase phase) {
+        this.phase = phase;
+    }
+
+    // -- identifier
+    /**
+     * If the no-arg constructor is used, then the framework will populate this field reflectively.
+     */
+    private Identifier identifier;
+    public Identifier getIdentifier() {
+        return identifier;
+    }
+
+    /**
+     * Not API, set by the framework if the no-arg constructor is used.
+     */
+    public void setIdentifier(final Identifier identifier) {
+        this.identifier = identifier;
+    }
+
+
+    // -- hide, isHidden
+    private boolean hidden;
+    public boolean isHidden() {
+        return hidden;
+    }
+
+    /**
+     * @see #veto(String, Object...)
+     */
+    public void hide() {
+        this.hidden = true;
+    }
+
+
+    // -- disable, isDisabled, getDisabledReason, getDisabledReasonTranslatable
+    private String disabledReason;
+
+    public boolean isDisabled() {
+        return disabledReason != null || disabledReasonTranslatable != null;
+    }
+
+    /**
+     * If {@link #isDisabled() disabled}, then either this method returns non-null or {@link #getDisabledReasonTranslatable()} will.
+     */
+    public String getDisabledReason() {
+        return disabledReason;
+    }
+
+    /**
+     * @see #disable(org.apache.isis.applib.services.i18n.TranslatableString)
+     * @see #veto(String, Object...)
+     */
+    public void disable(final String reason) {
+        this.disabledReason = reason;
+    }
+
+    private TranslatableString disabledReasonTranslatable;
+    /**
+     * If {@link #isDisabled() disabled}, then either this method returns non-null or {@link #getDisabledReason()} will.
+     */
+    public TranslatableString getDisabledReasonTranslatable() {
+        return disabledReasonTranslatable;
+    }
+    /**
+     * @see #disable(java.lang.String)
+     * @see #veto(org.apache.isis.applib.services.i18n.TranslatableString)
+     */
+    public void disable(final TranslatableString reason) {
+        this.disabledReasonTranslatable = reason;
+    }
+
+
+    // -- invalidate, isInvalid, getInvalidityReason, getInvalidityReasonTranslatable
+    private String invalidatedReason;
+    public boolean isInvalid() {
+        return invalidatedReason != null || invalidatedReasonTranslatable != null;
+    }
+
+    /**
+     * If {@link #isInvalid() invalid}, then either this method returns non-null or {@link #getInvalidityReasonTranslatable()} will.
+     */
+    public String getInvalidityReason() {
+        return invalidatedReason;
+    }
+    /**
+     * @see #invalidate(org.apache.isis.applib.services.i18n.TranslatableString)
+     * @see #veto(String, Object...)
+     */
+    public void invalidate(final String reason) {
+        this.invalidatedReason = reason;
+    }
+
+    private TranslatableString invalidatedReasonTranslatable;
+    /**
+     * If {@link #isInvalid() invalid}, then either this method returns non-null or {@link #getInvalidityReason()} will.
+     */
+    public TranslatableString getInvalidityReasonTranslatable() {
+        return invalidatedReasonTranslatable;
+    }
+
+    /**
+     * @see #invalidate(String)
+     * @see #veto(org.apache.isis.applib.services.i18n.TranslatableString)
+     */
+    public void invalidate(final TranslatableString reason) {
+        this.invalidatedReasonTranslatable = reason;
+    }
+
+
+
+    // -- veto
+    /**
+     * Use instead of {@link #hide()}, {@link #disable(String)} and {@link #invalidate(String)}; just delegates to
+     * appropriate vetoing method based upon the {@link #getEventPhase() phase}.
+     *
+     * <p>
+     *     If hiding, just pass <tt>null</tt> for the parameter.
+     * </p>
+     *
+     * @param reason - reason why the interaction is being invalidated (ignored if in {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#HIDE hide} phase).
+     * @param args
+     *
+     * @see #veto(org.apache.isis.applib.services.i18n.TranslatableString)
+     */
+    @Programmatic
+    public void veto(final String reason, final Object... args) {
+        switch (getEventPhase()) {
+        case HIDE:
+            hide();
+            break;
+        case DISABLE:
+            if(reason == null) {
+                throw new IllegalArgumentException("Reason must be non-null");
+            }
+            disable(String.format(reason, args));
+            break;
+        case VALIDATE:
+            if(reason == null) {
+                throw new IllegalArgumentException("Reason must be non-null");
+            }
+            invalidate(String.format(reason, args));
+            break;
+        case EXECUTED:
+        case EXECUTING:
+            break;
+        default:
+            throw _Exceptions.unmatchedCase(getEventPhase());
+        }
+    }
+    /**
+     * Use instead of {@link #hide()}, {@link #disable(org.apache.isis.applib.services.i18n.TranslatableString)} and {@link #invalidate(org.apache.isis.applib.services.i18n.TranslatableString)}; just delegates to
+     * appropriate vetoing method based upon the {@link #getEventPhase() phase}.
+     *
+     * <p>
+     *     If hiding, just pass <tt>null</tt> for the parameter.
+     * </p>
+     *
+     * @param translatableReason - reason why the interaction is being invalidated (ignored if in {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#HIDE hide} phase).
+     *
+     * @see #veto(String, Object...)
+     */
+    @Programmatic
+    public void veto(final TranslatableString translatableReason) {
+        switch (getEventPhase()) {
+        case HIDE:
+            hide();
+            break;
+        case DISABLE:
+            disable(translatableReason);
+            break;
+        case VALIDATE:
+            invalidate(translatableReason);
+            break;
+        case EXECUTED:
+        case EXECUTING:
+            break;
+        default:
+            throw _Exceptions.unmatchedCase(getEventPhase());
+        }
+    }
+
+
+    // -- userData
+    /**
+     * Provides a mechanism to pass data to the next {@link #getEventPhase() phase}.
+     */
+    private final Map<Object, Object> userData = _Maps.newHashMap();
+
+    /**
+     * Obtain user-data, as set by a previous {@link #getEventPhase() phase}.
+     */
+    public Object get(Object key) {
+        return userData.get(key);
+    }
+    /**
+     * Set user-data, for the use of a subsequent {@link #getEventPhase() phase}.
+     */
+    public void put(Object key, Object value) {
+        userData.put(key, value);
+    }
+
+    private final static ToString<AbstractDomainEvent<?>> toString =
+            ObjectContracts.<AbstractDomainEvent<?>>
+    toString("source", AbstractDomainEvent::getSource)
+    .thenToString("identifier", AbstractDomainEvent::getIdentifier)
+    .thenToString("eventPhase", AbstractDomainEvent::getEventPhase)
+    ;
+
+    @Override
+    public String toString() {
+        return toString.toString(this);
+    }
+
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/ActionDomainEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/ActionDomainEvent.java
new file mode 100644
index 0000000..752a3a3
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/ActionDomainEvent.java
@@ -0,0 +1,215 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.domain;
+
+import java.util.List;
+
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
+
+public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.Action#domainEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.actionAnnotation.domainEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ActionDomainEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ActionDomainEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ActionDomainEvent<Object> {}
+
+
+
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     * <p>
+     *     Recommended because it reduces the amount of boilerplate in the domain object classes.
+     * </p>
+     */
+    public ActionDomainEvent() {
+    }
+
+    //    // -- command
+    //    private Command command;
+    //
+    //    /**
+    //     * @deprecated - use {@link CommandContext#getCommand()} to obtain the current {@link Command}.
+    //     */
+    //    @Deprecated
+    //    public Command getCommand() {
+    //        return command;
+    //    }
+    //
+    //    /**
+    //     * Not API - set by the framework.
+    //     *
+    //     * @deprecated - the corresponding {@link #getCommand()} should not be called, instead use {@link CommandContext#getCommand()} to obtain the current {@link Command}.
+    //     */
+    //    @Deprecated
+    //    public void setCommand(Command command) {
+    //        this.command = command;
+    //    }
+
+
+    // -- actionSemantics
+    public SemanticsOf getSemantics() {
+        return actionSemantics;
+    }
+
+    private SemanticsOf actionSemantics;
+
+    /**
+     * @deprecated - use {@link #getSemantics()} instead.
+     */
+    @Deprecated
+    public SemanticsOf getActionSemantics() {
+        return actionSemantics;
+    }
+
+    /**
+     * Not API - set by the framework.
+     */
+    public void setActionSemantics(SemanticsOf actionSemantics) {
+        this.actionSemantics = actionSemantics;
+    }
+
+
+
+    // -- parameterNames
+    private List<String> parameterNames;
+    public List<String> getParameterNames() {
+        return parameterNames;
+    }
+    public void setParameterNames(final List<String> parameterNames) {
+        this.parameterNames = parameterNames;
+    }
+
+
+    // -- parameterTypes
+    private List<Class<?>> parameterTypes;
+    public List<Class<?>> getParameterTypes() {
+        return parameterTypes;
+    }
+
+    public void setParameterTypes(final List<Class<?>> parameterTypes) {
+        this.parameterTypes = parameterTypes;
+    }
+
+
+
+    // region > mixedIn
+    private Object mixedIn;
+
+    /**
+     * Populated only for mixins; holds the underlying domain object that the mixin contributes to.
+     */
+    @Override
+    public Object getMixedIn() {
+        return mixedIn;
+    }
+    /**
+     * Not API - set by the framework.
+     */
+    @Override
+    public void setMixedIn(final Object mixedIn) {
+        this.mixedIn = mixedIn;
+    }
+    // endregion
+
+    // -- arguments
+    private List<Object> arguments;
+    /**
+     * The arguments being used to invoke the action; populated at {@link Phase#VALIDATE} and subsequent phases
+     * (but null for {@link Phase#HIDE hidden} and {@link Phase#DISABLE disable} phases).
+     */
+    public List<Object> getArguments() {
+        return arguments;
+    }
+
+    /**
+     * Not API - set by the framework.
+     */
+    public void setArguments(List<Object> arguments) {
+        this.arguments = arguments;
+    }
+
+
+    // -- returnValue
+    /**
+     *
+     */
+    private Object returnValue;
+
+    /**
+     * The value returned by the action.
+     *
+     * <p>
+     *     Only available for the {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#EXECUTED}
+     *     {@link #getEventPhase() phase}.
+     * </p>
+     */
+    public Object getReturnValue() {
+        return returnValue;
+    }
+
+    /**
+     * Set by the framework.
+     *
+     * Event subscribers can replace the value with some other value if they wish, though only in the
+     * {@link Phase#EXECUTED} phase.
+     */
+    public void setReturnValue(final Object returnValue) {
+        this.returnValue = returnValue;
+    }
+
+
+
+    private final static ToString<ActionDomainEvent<?>> toString = ObjectContracts.<ActionDomainEvent<?>>
+    toString("source", ActionDomainEvent::getSource)
+    .thenToString("identifier", ActionDomainEvent::getIdentifier)
+    .thenToString("eventPhase", ActionDomainEvent::getEventPhase)
+    ;
+
+    @Override
+    public String toString() {
+        return toString.toString(this);
+    }
+
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/CollectionDomainEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/CollectionDomainEvent.java
new file mode 100644
index 0000000..467caa6
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/CollectionDomainEvent.java
@@ -0,0 +1,139 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.domain;
+
+import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
+
+public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S> {
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.Collection#domainEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends CollectionDomainEvent<Object, Object> { }
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends CollectionDomainEvent<Object, Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends CollectionDomainEvent<Object, Object> {}
+
+
+
+    // -- constructor
+
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     * <p>
+     *     Recommended because it reduces the amount of boilerplate in the domain object classes.
+     * </p>
+     */
+    public CollectionDomainEvent() {
+    }
+
+
+
+    // -- value
+    private T value;
+
+    /**
+     * The proposed reference to either add or remove (per {@link #getOf()}), populated at {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#VALIDATE}
+     * and subsequent phases (is null for {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#HIDE hidden} and {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#DISABLE disable} phases).
+     */
+    public T getValue() {
+        return value;
+    }
+    /**
+     * Not API, set by the framework.
+     */
+    public void setValue(T value) {
+        this.value = value;
+    }
+
+
+    // -- Of
+    public static enum Of {
+        /**
+         * The collection is being accessed
+         * ({@link Phase#HIDE hide} and
+         * {@link Phase#DISABLE disable}) checks.
+         */
+        ACCESS,
+        /**
+         * The collection is being added to
+         * ({@link Phase#VALIDATE validity} check and
+         * {@link Phase#EXECUTED execution}).
+         */
+        ADD_TO,
+        /**
+         * The collection is being removed from
+         * ({@link Phase#VALIDATE validity} check and
+         * {@link Phase#EXECUTED execution}).
+         */
+        REMOVE_FROM
+    }
+
+    private Of of;
+
+    public Of getOf() {
+        return of;
+    }
+
+    /**
+     * Not API; updates from {@link Of#ACCESS} to either {@link Of#ADD_TO} or {@link Of#REMOVE_FROM} when hits the
+     * {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#VALIDATE validation phase}.
+     */
+    public void setOf(Of of) {
+        this.of = of;
+    }
+
+
+
+    private final static ToString<CollectionDomainEvent<?,?>> toString =
+            ObjectContracts.<CollectionDomainEvent<?,?>>
+    toString("source", CollectionDomainEvent::getSource)
+    .thenToString("identifier", CollectionDomainEvent::getIdentifier)
+    .thenToString("eventPhase", CollectionDomainEvent::getEventPhase)
+    .thenToString("of", CollectionDomainEvent::getOf)
+    .thenToString("value", CollectionDomainEvent::getValue)
+    ;
+
+    @Override
+    public String toString() {
+        return toString.toString(this);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/EventObjectBase.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/EventObjectBase.java
new file mode 100644
index 0000000..6668e33
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/EventObjectBase.java
@@ -0,0 +1,79 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.domain;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+
+import static org.apache.isis.commons.internal.base._With.requires;
+
+/**
+ * @since 2.0
+ */
+public abstract class EventObjectBase<T> {
+
+    /**
+     * The object on which the Event initially occurred.
+     */
+    protected transient T source;
+
+    /**
+     * Constructs a prototypical Event.
+     *
+     * @param    source    The object on which the Event initially occurred.
+     */
+    protected EventObjectBase(@Nullable T source) {
+        this.source = source;
+    }
+
+    /**
+     * The object on which the Event initially occurred.
+     *
+     * @return   The object on which the Event initially occurred.
+     */
+    public @Nullable T getSource() {
+        return source;
+    }
+    
+    /**
+     * A one-shot function. Only allowed to be called if a source has not already been set.
+     * 
+     * @apiNote reserved for framework internal use
+     * 
+     * @param source non-null
+     */
+    public void initSource(T source) {
+        if(this.source!=null) {
+            throw _Exceptions.unrecoverable(getClass().getName() + " cannot init when source is already set");
+        }
+        requires(source, "source");
+        this.source = source;
+    }
+
+    /**
+     * Returns a String representation of this EventObject.
+     *
+     * @return  a String representation of this EventObject
+     */
+    public String toString() {
+        return getClass().getName() + "[source=" + source + "]";
+    }
+    
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/PropertyDomainEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/PropertyDomainEvent.java
new file mode 100644
index 0000000..dd9d453
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/domain/PropertyDomainEvent.java
@@ -0,0 +1,116 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.domain;
+
+import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
+
+public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.Property#domainEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends PropertyDomainEvent<Object, Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends PropertyDomainEvent<Object, Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends PropertyDomainEvent<Object, Object> {}
+
+
+    // -- constructors
+
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     * <p>
+     *     Recommended because it reduces the amount of boilerplate in the domain object classes.
+     * </p>
+     */
+    public PropertyDomainEvent() {
+    }
+
+
+    // -- oldValue
+    private T oldValue;
+
+    /**
+     * The current (pre-modification) value of the property; populated at {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#VALIDATE} and subsequent phases
+     * (but null for {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#HIDE hidden} and {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#DISABLE disable} phases).
+     */
+    public T getOldValue() {
+        return oldValue;
+    }
+    /**
+     * Not API; for framework use only.
+     */
+    public void setOldValue(T oldValue) {
+        this.oldValue = oldValue;
+    }
+
+
+    // -- newValue
+    private T newValue;
+    /**
+     * The proposed (post-modification) value of the property; populated at {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#VALIDATE} and subsequent phases
+     * (but null for {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#HIDE hidden} and {@link org.apache.isis.applib.events.domain.AbstractDomainEvent.Phase#DISABLE disable} phases).
+     */
+    public T getNewValue() {
+        return newValue;
+    }
+    /**
+     * Not API; for framework use only.
+     */
+    public void setNewValue(T newValue) {
+        this.newValue = newValue;
+    }
+
+
+    private final static ToString<PropertyDomainEvent<?,?>> toString =
+            ObjectContracts.<PropertyDomainEvent<?,?>>
+    toString("source", PropertyDomainEvent::getSource)
+    .thenToString("identifier", PropertyDomainEvent::getIdentifier)
+    .thenToString("eventPhase", PropertyDomainEvent::getEventPhase)
+    .thenToString("oldValue", PropertyDomainEvent::getOldValue)
+    .thenToString("newValue", PropertyDomainEvent::getNewValue)
+    ;
+
+    @Override
+    public String toString() {
+        return toString.toString(this);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/AbstractLifecycleEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/AbstractLifecycleEvent.java
new file mode 100644
index 0000000..2915043
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/AbstractLifecycleEvent.java
@@ -0,0 +1,33 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+import org.apache.isis.applib.events.domain.EventObjectBase;
+
+public abstract class AbstractLifecycleEvent<S> extends EventObjectBase<S> {
+
+    public AbstractLifecycleEvent() {
+        this(null);
+    }
+
+    public AbstractLifecycleEvent(S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectCreatedEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectCreatedEvent.java
new file mode 100644
index 0000000..dd7ebb6
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectCreatedEvent.java
@@ -0,0 +1,58 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+public abstract class ObjectCreatedEvent<S> extends AbstractLifecycleEvent<S> {
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObject#createdLifecycleEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ObjectCreatedEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ObjectCreatedEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ObjectCreatedEvent<Object> {}
+
+
+    public ObjectCreatedEvent() {
+    }
+    
+    public ObjectCreatedEvent(final S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectLoadedEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectLoadedEvent.java
new file mode 100644
index 0000000..9433bc9
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectLoadedEvent.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+public abstract class ObjectLoadedEvent<S> extends AbstractLifecycleEvent<S> {
+
+    
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObject#loadedLifecycleEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ObjectLoadedEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ObjectLoadedEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ObjectLoadedEvent<Object> {}
+
+
+    public ObjectLoadedEvent() {
+    }
+    
+    public ObjectLoadedEvent(final S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectPersistedEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectPersistedEvent.java
new file mode 100644
index 0000000..3a5084e
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectPersistedEvent.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+public abstract class ObjectPersistedEvent<S> extends AbstractLifecycleEvent<S> {
+
+    
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObject#persistedLifecycleEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ObjectPersistedEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ObjectPersistedEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ObjectPersistedEvent<Object> {}
+
+
+    public ObjectPersistedEvent() {
+    }
+    
+    public ObjectPersistedEvent(final S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectPersistingEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectPersistingEvent.java
new file mode 100644
index 0000000..b68474b
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectPersistingEvent.java
@@ -0,0 +1,59 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+public abstract class ObjectPersistingEvent<S> extends AbstractLifecycleEvent<S> {
+
+    
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObject#persistingLifecycleEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ObjectPersistingEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ObjectPersistingEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ObjectPersistingEvent<Object> {}
+
+
+    public ObjectPersistingEvent() {
+    }
+    public ObjectPersistingEvent(final S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectRemovingEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectRemovingEvent.java
new file mode 100644
index 0000000..7ffb0a2
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectRemovingEvent.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+public abstract class ObjectRemovingEvent<S> extends AbstractLifecycleEvent<S> {
+
+    
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObject#removingLifecycleEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ObjectRemovingEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ObjectRemovingEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ObjectRemovingEvent<Object> {}
+
+
+    public ObjectRemovingEvent() {
+    }
+    
+    public ObjectRemovingEvent(final S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectUpdatedEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectUpdatedEvent.java
new file mode 100644
index 0000000..78d945a
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectUpdatedEvent.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+public abstract class ObjectUpdatedEvent<S> extends AbstractLifecycleEvent<S> {
+
+    
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObject#updatedLifecycleEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ObjectUpdatedEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ObjectUpdatedEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ObjectUpdatedEvent<Object> {}
+
+
+    public ObjectUpdatedEvent() {
+    }
+    
+    public ObjectUpdatedEvent(final S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectUpdatingEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectUpdatingEvent.java
new file mode 100644
index 0000000..c376903
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/lifecycle/ObjectUpdatingEvent.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.lifecycle;
+
+public abstract class ObjectUpdatingEvent<S> extends AbstractLifecycleEvent<S> {
+
+    
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObject#updatingLifecycleEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends ObjectUpdatingEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends ObjectUpdatingEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends ObjectUpdatingEvent<Object> {}
+
+
+    public ObjectUpdatingEvent() {
+    }
+    
+    public ObjectUpdatingEvent(final S source) {
+        super(source);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/AbstractUiEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/AbstractUiEvent.java
new file mode 100644
index 0000000..a6ecf17
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/AbstractUiEvent.java
@@ -0,0 +1,60 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.ui;
+
+import java.util.Map;
+
+import org.apache.isis.applib.events.domain.EventObjectBase;
+import org.apache.isis.commons.internal.collections._Maps;
+
+public abstract class AbstractUiEvent<S> extends EventObjectBase<S> {
+
+    // -- constructors
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     */
+    public AbstractUiEvent() {
+        this(null);
+    }
+
+    public AbstractUiEvent(final S source) {
+        super(source);
+    }
+
+    // -- userData
+    /**
+     * Provides a mechanism to pass data around.
+     */
+    private final Map<Object, Object> userData = _Maps.newHashMap();
+
+    /**
+     * Obtain user-data, as set by any other subscribers.
+     */
+    public Object get(Object key) {
+        return userData.get(key);
+    }
+    /**
+     * Set user-data, for the use of other subscribers.
+     */
+    public void put(Object key, Object value) {
+        userData.put(key, value);
+    }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/CssClassUiEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/CssClassUiEvent.java
new file mode 100644
index 0000000..e26918b
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/CssClassUiEvent.java
@@ -0,0 +1,87 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.ui;
+
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+
+/**
+ * Emitted for subscribers to obtain a cssClass hint (equivalent to the <tt>cssClass()</tt> supporting method or the {@link DomainObjectLayout#cssClass()} attribute).
+ */
+public abstract class CssClassUiEvent<S> extends AbstractUiEvent<S> {
+
+    // -- constructors
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     */
+    public CssClassUiEvent() {
+        this(null);
+    }
+
+    public CssClassUiEvent(final S source) {
+        super(source);
+    }
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObjectLayout#cssClassUiEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends CssClassUiEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends CssClassUiEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends CssClassUiEvent<Object> {}
+
+
+    // -- cssClass
+    private String cssClass;
+
+    /**
+     * The CSS class as provided by a subscriber using {@link #setCssClass(String)}.
+     */
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    /**
+     * For subscribers to call to provide a CSS class for this object.
+     */
+    public void setCssClass(final String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/IconUiEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/IconUiEvent.java
new file mode 100644
index 0000000..e17f25d
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/IconUiEvent.java
@@ -0,0 +1,93 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.ui;
+
+import java.util.EventObject;
+
+/**
+ * Emitted for subscribers to obtain a cssClass hint (equivalent to the <tt>iconName()</tt> supporting method).
+ */
+public abstract class IconUiEvent<S> extends AbstractUiEvent<S> {
+
+    // -- constructors
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     * <p>
+     *     Because the {@link EventObject} superclass prohibits a null source, a dummy value is temporarily used.
+     * </p>
+     */
+    public IconUiEvent() {
+        this(null);
+    }
+
+    public IconUiEvent(final S source) {
+        super(source);
+    }
+
+
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObjectLayout#iconUiEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends IconUiEvent<Object> { }
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends IconUiEvent<Object> { }
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends IconUiEvent<Object> { }
+
+
+
+    // -- iconName
+    private String iconName;
+
+    /**
+     * The icon name as provided by a subscriber using {@link #setIconName(String)}.
+     */
+    public String getIconName() {
+        return iconName;
+    }
+
+    /**
+     * For subscribers to call to provide an icon name for this object.
+     */
+    public void setIconName(final String iconName) {
+        this.iconName = iconName;
+    }
+
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/LayoutUiEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/LayoutUiEvent.java
new file mode 100644
index 0000000..552508b
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/LayoutUiEvent.java
@@ -0,0 +1,92 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.ui;
+
+import java.util.EventObject;
+
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+
+/**
+ * Emitted for subscribers to obtain a layout hint (equivalent to the <tt>layout()</tt> supporting method).
+ */
+public abstract class LayoutUiEvent<S> extends AbstractUiEvent<S> {
+
+    //region > constructors
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     * <p>
+     *     Because the {@link EventObject} superclass prohibits a null source, a dummy value is temporarily used.
+     * </p>
+     */
+    public LayoutUiEvent() {
+        this(null);
+    }
+
+    public LayoutUiEvent(final S source) {
+        super(source);
+    }
+
+    //endregion
+
+    //region > Default class
+    /**
+     * This class is the default for the
+     * {@link DomainObjectLayout#layoutUiEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectLayoutAnnotation.layoutUiEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends LayoutUiEvent<Object> { }
+    //endregion
+
+    //region > Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event.
+     */
+    public static class Noop extends LayoutUiEvent<Object> { }
+    //endregion
+
+    //region > Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends LayoutUiEvent<Object> { }
+    //endregion
+
+    //region > layout
+    private String layout;
+
+    /**
+     * The name of the alternate layout to use, as provided by a subscriber using {@link #setLayout(String)}.
+     */
+    public String getLayout() {
+        return layout;
+    }
+
+    /**
+     * For subscribers to call to provide a layout for this object.
+     */
+    public void setLayout(final String layout) { }
+    //endregion
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/TitleUiEvent.java b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/TitleUiEvent.java
new file mode 100644
index 0000000..059cf10
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/events/ui/TitleUiEvent.java
@@ -0,0 +1,121 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.events.ui;
+
+import java.util.EventObject;
+
+import org.apache.isis.applib.services.i18n.TranslatableString;
+
+/**
+ * Emitted for subscribers to obtain a cssClass hint (equivalent to the <tt>title()</tt> supporting method).
+ */
+public abstract class TitleUiEvent<S> extends AbstractUiEvent<S> {
+
+    // -- Default class
+    /**
+     * This class is the default for the
+     * {@link org.apache.isis.applib.annotation.DomainObjectLayout#titleUiEvent()} annotation attribute.  Whether this
+     * raises an event or not depends upon the <tt>isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault</tt>
+     * configuration property.
+     */
+    public static class Default extends TitleUiEvent<Object> {}
+
+
+    // -- Noop class
+
+    /**
+     * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
+     * property seting for the {@link Default} event.
+     */
+    public static class Noop extends TitleUiEvent<Object> {}
+
+
+    // -- Doop class
+
+    /**
+     * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
+     * property setting for the {@link Default} event..
+     */
+    public static class Doop extends TitleUiEvent<Object> {}
+
+
+    // -- constructors
+    /**
+     * If used then the framework will set state via (non-API) setters.
+     *
+     * <p>
+     *     Because the {@link EventObject} superclass prohibits a null source, a dummy value is temporarily used.
+     * </p>
+     */
+    public TitleUiEvent() {
+        this(null);
+    }
+
+    public TitleUiEvent(final S source) {
+        super(source);
+    }
+
+
+
+    // -- title
+    private String title;
+
+    /**
+     * The title as provided by a subscriber using {@link #setTitle(String)}.
+     *
+     * <p>
+     *     Note that a {@link #getTranslatableTitle()} will be used in preference, if available.
+     * </p>
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * For subscribers to call to provide a (non-translated) title for this object.
+     */
+    public void setTitle(final String title) {
+        this.title = title;
+    }
+
+
+    // -- translatableTitle
+    private TranslatableString translatableTitle;
+
+    /**
+     * The translatable (i18n) title as provided by a subscriber using {@link #setTranslatableTitle(TranslatableString)}.
+     *
+     * <p>
+     *     If a translatable title has been provided then this will be used in preference to any
+     *     {@link #getTitle() non-translatable title}.
+     * </p>
+     */
+    public TranslatableString getTranslatableTitle() {
+        return translatableTitle;
+    }
+
+    /**
+     * For subscribers to call to provide a translatable (i18n) title for this object.
+     */
+    public void setTranslatableTitle(final TranslatableString translatableTitle) {
+        this.translatableTitle = translatableTitle;
+    }
+
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ActionLayoutData.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ActionLayoutData.java
new file mode 100644
index 0000000..0123d3c
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ActionLayoutData.java
@@ -0,0 +1,302 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.Redirect;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.layout.links.Link;
+
+/**
+ * Describes the layout of a single action, broadly corresponding to {@link org.apache.isis.applib.annotation.ActionLayout}.
+ *
+ * <p>
+ *  Note that {@link org.apache.isis.applib.annotation.ActionLayout#contributed()} is omitted because this only applies
+ *  to domain services.
+ * </p>
+ */
+@XmlRootElement(
+        name = "action"
+        )
+@XmlType(
+        name = "action"
+        , propOrder = {
+                "named"
+                , "describedAs"
+                , "metadataError"
+                , "link"
+        }
+        )
+public class ActionLayoutData implements Serializable, Owned<ActionLayoutDataOwner>, HasCssClass, HasCssClassFa,
+HasDescribedAs, HasHidden, HasNamed, HasBookmarking {
+
+    private static final long serialVersionUID = 1L;
+
+    public ActionLayoutData() {
+    }
+    public ActionLayoutData(final String id) {
+        setId(id);
+    }
+
+
+    private String id;
+    /**
+     * Method name.
+     *
+     * <p>
+     *     Overloaded methods are not supported.
+     * </p>
+     */
+    @XmlAttribute(name="id", required = true)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+
+
+    private BookmarkPolicy bookmarking;
+
+    @Override
+    @XmlAttribute(required = false)
+    public BookmarkPolicy getBookmarking() {
+        return bookmarking;
+    }
+
+    @Override
+    public void setBookmarking(BookmarkPolicy bookmarking) {
+        this.bookmarking = bookmarking;
+    }
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+    private String cssClassFa;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClassFa() {
+        return cssClassFa;
+    }
+
+    @Override
+    public void setCssClassFa(String cssClassFa) {
+        this.cssClassFa = cssClassFa;
+    }
+
+
+
+    private org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition;
+
+    @Override
+    @XmlAttribute(required = false)
+    public org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition() {
+        return cssClassFaPosition;
+    }
+
+    @Override
+    public void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition) {
+        this.cssClassFaPosition = cssClassFaPosition;
+    }
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+
+    private Where hidden;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Where getHidden() {
+        return hidden;
+    }
+
+    @Override
+    public void setHidden(Where hidden) {
+        this.hidden = hidden;
+    }
+
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+
+    private org.apache.isis.applib.annotation.ActionLayout.Position position;
+
+    @XmlAttribute(required = false)
+    public org.apache.isis.applib.annotation.ActionLayout.Position getPosition() {
+        return position;
+    }
+
+    public void setPosition(org.apache.isis.applib.annotation.ActionLayout.Position position) {
+        this.position = position;
+    }
+
+
+    private PromptStyle promptStyle;
+
+    @XmlAttribute(required = false)
+    public PromptStyle getPromptStyle() {
+        return promptStyle;
+    }
+
+    public void setPromptStyle(PromptStyle promptStyle) {
+        this.promptStyle = promptStyle;
+    }
+
+
+
+    private Redirect redirect;
+
+    @XmlAttribute(required = false)
+    public Redirect getRedirect() {
+        return redirect;
+    }
+
+    public void setRedirect(Redirect redirect) {
+        this.redirect = redirect;
+    }
+
+
+
+    private ActionLayoutDataOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @Override
+    @XmlTransient
+    public ActionLayoutDataOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final ActionLayoutDataOwner owner) {
+        this.owner = owner;
+    }
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+    private Link link;
+
+    /**
+     * The link to access this resource from the REST API (Restful Objects viewer).
+     *
+     * <p>
+     *     Populated by the framework automatically.
+     * </p>
+     */
+    @XmlElement(required = false)
+    public Link getLink() {
+        return link;
+    }
+
+    public void setLink(final Link link) {
+        this.link = link;
+    }
+
+
+
+    @Override public String toString() {
+        return "ActionLayoutData{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ActionLayoutDataOwner.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ActionLayoutDataOwner.java
new file mode 100644
index 0000000..c4b07bb
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ActionLayoutDataOwner.java
@@ -0,0 +1,26 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.List;
+
+public interface ActionLayoutDataOwner extends Owner {
+    List<ActionLayoutData> getActions();
+    void setActions(List<ActionLayoutData> actions);
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/CollectionLayoutData.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/CollectionLayoutData.java
new file mode 100644
index 0000000..40fed23
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/CollectionLayoutData.java
@@ -0,0 +1,275 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.layout.links.Link;
+import org.apache.isis.commons.internal.collections._Lists;
+
+/**
+ * Describes the layout of a single collection, broadly corresponds to the {@link org.apache.isis.applib.annotation.CollectionLayout} annotation.
+ *
+ * <p>
+ *     Note that {@link org.apache.isis.applib.annotation.CollectionLayout#render()} is omitted because
+ *     {@link #defaultView} is its replacement.
+ * </p>
+ */
+@XmlRootElement(
+        name = "collection"
+        )
+@XmlType(
+        name = "collection"
+        , propOrder = {
+                "named"
+                ,"describedAs"
+                ,"sortedBy"
+                , "actions"
+                , "metadataError"
+                , "link"
+        }
+        )
+public class CollectionLayoutData
+implements MemberRegion<CollectionLayoutDataOwner>,
+ActionLayoutDataOwner,
+Serializable,
+HasCssClass, HasDescribedAs, HasHidden, HasNamed {
+
+    private static final long serialVersionUID = 1L;
+
+    public CollectionLayoutData() {
+    }
+    public CollectionLayoutData(final String id) {
+        setId(id);
+    }
+
+
+    private String id;
+
+    /**
+     * Collection identifier, being the getter method without "get" prefix, first letter lower cased.
+     */
+    @XmlAttribute(required = true)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+
+    private String defaultView;
+
+    /**
+     * Typically <code>table</code> or <code>hidden</code>, but could be any other named view that is configured and
+     * appropriate, eg <code>gmap3</code> or <code>fullcalendar2</code>.
+     */
+    @XmlAttribute(required = false)
+    public String getDefaultView() {
+        return defaultView;
+    }
+
+    public void setDefaultView(String defaultView) {
+        this.defaultView = defaultView;
+    }
+
+
+    private Where hidden;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Where getHidden() {
+        return hidden;
+    }
+
+    @Override
+    public void setHidden(Where hidden) {
+        this.hidden = hidden;
+    }
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+    private Integer paged;
+
+    @XmlAttribute(required = false)
+    public Integer getPaged() {
+        return paged;
+    }
+
+    public void setPaged(Integer paged) {
+        this.paged = paged;
+    }
+
+
+
+    private String sortedBy;
+
+    @XmlElement(required = false)
+    public String getSortedBy() {
+        return sortedBy;
+    }
+
+    public void setSortedBy(String sortedBy) {
+        this.sortedBy = sortedBy;
+    }
+
+
+
+    private List<ActionLayoutData> actions = _Lists.newArrayList();
+
+    // no wrapper
+    @Override
+    @XmlElement(name = "action", required = false)
+    public List<ActionLayoutData> getActions() {
+        return actions;
+    }
+
+    @Override
+    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
+        this.actions = actionLayoutDatas;
+    }
+
+
+
+    private CollectionLayoutDataOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @Override
+    @XmlTransient
+    public CollectionLayoutDataOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final CollectionLayoutDataOwner owner) {
+        this.owner = owner;
+    }
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+    private Link link;
+
+    /**
+     * The link to access this resource from the REST API (Restful Objects viewer).
+     *
+     * <p>
+     *     Populated by the framework automatically.
+     * </p>
+     */
+    @XmlElement(required = false)
+    public Link getLink() {
+        return link;
+    }
+
+    public void setLink(final Link link) {
+        this.link = link;
+    }
+
+    @Override public String toString() {
+        return "CollectionLayoutData{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/CollectionLayoutDataOwner.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/CollectionLayoutDataOwner.java
new file mode 100644
index 0000000..b4ecb19
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/CollectionLayoutDataOwner.java
@@ -0,0 +1,26 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.List;
+
+public interface CollectionLayoutDataOwner extends MemberRegionOwner {
+
+    List<CollectionLayoutData> getCollections();
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/DomainObjectLayoutData.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/DomainObjectLayoutData.java
new file mode 100644
index 0000000..2630a05
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/DomainObjectLayoutData.java
@@ -0,0 +1,231 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.applib.layout.links.Link;
+
+/**
+ * Describes the layout of the title and icon of a domain object, broadly corresponding to {@link org.apache.isis.applib.annotation.DomainObjectLayout}.
+ */
+@XmlRootElement(
+        name = "domainObject"
+        )
+@XmlType(
+        name = "domainObject"
+        , propOrder = {
+                "named"
+                , "describedAs"
+                , "plural"
+                , "metadataError"
+                , "link"
+        }
+        )
+public class DomainObjectLayoutData implements Serializable, Owned<DomainObjectLayoutDataOwner>,
+HasBookmarking, HasCssClass, HasCssClassFa, HasDescribedAs, HasNamed {
+
+    private static final long serialVersionUID = 1L;
+
+    public DomainObjectLayoutData() {
+    }
+
+
+    private BookmarkPolicy bookmarking;
+
+    @Override
+    @XmlAttribute(required = false)
+    public BookmarkPolicy getBookmarking() {
+        return bookmarking;
+    }
+
+    @Override
+    public void setBookmarking(BookmarkPolicy bookmarking) {
+        this.bookmarking = bookmarking;
+    }
+
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+    private String cssClassFa;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClassFa() {
+        return cssClassFa;
+    }
+
+    @Override
+    public void setCssClassFa(String cssClassFa) {
+        this.cssClassFa = cssClassFa;
+    }
+
+
+
+    private org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition;
+
+    @Override
+    @XmlAttribute(required = false)
+    public org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition getCssClassFaPosition() {
+        return cssClassFaPosition;
+    }
+
+    @Override
+    public void setCssClassFaPosition(org.apache.isis.applib.annotation.ActionLayout.CssClassFaPosition cssClassFaPosition) {
+        this.cssClassFaPosition = cssClassFaPosition;
+    }
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+
+    private String plural;
+
+    @XmlElement(required = false)
+    public String getPlural() {
+        return plural;
+    }
+
+    public void setPlural(String plural) {
+        this.plural = plural;
+    }
+
+
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+    private DomainObjectLayoutDataOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @Override
+    @XmlTransient
+    public DomainObjectLayoutDataOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final DomainObjectLayoutDataOwner owner) {
+        this.owner = owner;
+    }
+
+
+    private Link link;
+
+    /**
+     * The link to access this resource from the REST API (Restful Objects viewer).
+     *
+     * <p>
+     *     Populated by the framework automatically.
+     * </p>
+     */
+    @XmlElement(required = false)
+    public Link getLink() {
+        return link;
+    }
+
+    public void setLink(final Link link) {
+        this.link = link;
+    }
+
+
+
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/DomainObjectLayoutDataOwner.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/DomainObjectLayoutDataOwner.java
new file mode 100644
index 0000000..74c6a25
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/DomainObjectLayoutDataOwner.java
@@ -0,0 +1,25 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface DomainObjectLayoutDataOwner extends Owner {
+
+    DomainObjectLayoutData getDomainObject();
+    void setDomainObject(DomainObjectLayoutData domainObjectLayoutData);
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/FieldSet.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/FieldSet.java
new file mode 100644
index 0000000..52a90f7
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/FieldSet.java
@@ -0,0 +1,206 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Col;
+import org.apache.isis.commons.internal.collections._Lists;
+
+/**
+ * A {@link MemberRegion region} of the page containing a set of
+ * related {@link PropertyLayoutData properties} and associated
+ * {@link ActionLayoutData actions}.
+ */
+@XmlRootElement(
+        name = "fieldSet"
+        )
+@XmlType(
+        name = "fieldSet"
+        , propOrder = {
+                "name"
+                , "actions"
+                , "properties"
+                , "metadataError"
+        }
+        )
+public class FieldSet
+implements MemberRegion<FieldSetOwner>,
+ActionLayoutDataOwner,
+Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    public FieldSet() {
+    }
+
+    public FieldSet(final String name) {
+        setName(name);
+    }
+
+
+
+    private String id;
+
+    /**
+     * As per &lt;div id=&quot;...&quot;&gt;...&lt;/div&gt; : must be unique across entire page.
+     */
+    @XmlAttribute(required = false)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+
+
+    private Boolean unreferencedActions;
+
+    /**
+     * Whether this fieldset should be used to hold any unreferenced actions (contributed or &quot;native&quot;).
+     *
+     * <p>
+     *     Any layout must have precisely one fieldset or {@link BS3Col col} that has this attribute set.
+     * </p>
+     */
+    @XmlAttribute(required = false)
+    public Boolean isUnreferencedActions() {
+        return unreferencedActions;
+    }
+
+    public void setUnreferencedActions(final Boolean unreferencedActions) {
+        this.unreferencedActions = unreferencedActions;
+    }
+
+
+    private Boolean unreferencedProperties;
+    /**
+     * Whether this fieldset should be used to hold any unreferenced properties (contributed or &quot;native&quot;).
+     *
+     * <p>
+     *     Any grid layout must have precisely one fieldset that has this attribute set.
+     * </p>
+     */
+    @XmlAttribute(required = false)
+    public Boolean isUnreferencedProperties() {
+        return unreferencedProperties;
+    }
+
+    public void setUnreferencedProperties(final Boolean unreferencedProperties) {
+        this.unreferencedProperties = unreferencedProperties;
+    }
+
+
+
+
+    private String name;
+
+    /**
+     * Corresponds to the {@link MemberOrder#name()} (when applied to properties).
+     */
+    @XmlAttribute(required = false)
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+
+    private List<ActionLayoutData> actions = _Lists.newArrayList();
+
+    // no wrapper
+    @Override
+    @XmlElement(name = "action", required = false)
+    public List<ActionLayoutData> getActions() {
+        return actions;
+    }
+
+    @Override
+    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
+        this.actions = actionLayoutDatas;
+    }
+
+
+
+    private List<PropertyLayoutData> properties = _Lists.newArrayList();
+
+    // no wrapper; required=false because may be auto-generated
+    @XmlElement(name = "property", required = false)
+    public List<PropertyLayoutData> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(List<PropertyLayoutData> properties) {
+        this.properties = properties;
+    }
+
+
+    private FieldSetOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @Override
+    @XmlTransient
+    public FieldSetOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final FieldSetOwner owner) {
+        this.owner = owner;
+    }
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+    @Override public String toString() {
+        return "FieldSet{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/FieldSetOwner.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/FieldSetOwner.java
new file mode 100644
index 0000000..c6a0942
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/FieldSetOwner.java
@@ -0,0 +1,25 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.List;
+
+public interface FieldSetOwner extends MemberRegionOwner {
+    List<FieldSet> getFieldSets();
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasBookmarking.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasBookmarking.java
new file mode 100644
index 0000000..361971a
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasBookmarking.java
@@ -0,0 +1,29 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+
+public interface HasBookmarking {
+    @XmlAttribute(required = false)
+    BookmarkPolicy getBookmarking();
+    void setBookmarking(BookmarkPolicy bookmarking);
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasCssClass.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasCssClass.java
new file mode 100644
index 0000000..26d2088
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasCssClass.java
@@ -0,0 +1,27 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+public interface HasCssClass {
+    @XmlAttribute(required = false)
+    String getCssClass();
+    void setCssClass(String cssClass);
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasCssClassFa.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasCssClassFa.java
new file mode 100644
index 0000000..d556447
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasCssClassFa.java
@@ -0,0 +1,35 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.apache.isis.applib.annotation.ActionLayout;
+
+public interface HasCssClassFa {
+
+    @XmlAttribute(required = false)
+    String getCssClassFa();
+    void setCssClassFa(String cssClassFa);
+
+    @XmlAttribute(required = false)
+    ActionLayout.CssClassFaPosition getCssClassFaPosition();
+    void setCssClassFaPosition(ActionLayout.CssClassFaPosition cssClassFaPosition);
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasDescribedAs.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasDescribedAs.java
new file mode 100644
index 0000000..ad9f99a
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasDescribedAs.java
@@ -0,0 +1,29 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlElement;
+
+public interface HasDescribedAs {
+
+    @XmlElement(required = false)
+    String getDescribedAs();
+    void setDescribedAs(String describedAs);
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasHidden.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasHidden.java
new file mode 100644
index 0000000..60add99
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasHidden.java
@@ -0,0 +1,31 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.apache.isis.applib.annotation.Where;
+
+public interface HasHidden {
+
+    @XmlAttribute(required = false)
+    Where getHidden();
+    void setHidden(Where hidden);
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasNamed.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasNamed.java
new file mode 100644
index 0000000..098727c
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/HasNamed.java
@@ -0,0 +1,34 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+public interface HasNamed {
+
+    @XmlElement(required = false)
+    String getNamed();
+    void setNamed(String named);
+
+    @XmlAttribute(required = false)
+    Boolean getNamedEscaped();
+    void setNamedEscaped(Boolean namedEscaped);
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/MemberRegion.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/MemberRegion.java
new file mode 100644
index 0000000..f44efe2
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/MemberRegion.java
@@ -0,0 +1,33 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+/**
+ * Represents an area on the page containing one or several related members.
+ *
+ * <p>
+ *     Implementations include a <code>FieldSet</code> (containing a number
+ *     of properties and their actions), and a <code>CollectionLayoutData</code>
+ *     (containing a single collection and associated actions)
+ * </p>
+ */
+public interface MemberRegion<T extends MemberRegionOwner> extends Owned<T> {
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/MemberRegionOwner.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/MemberRegionOwner.java
new file mode 100644
index 0000000..a32526a
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/MemberRegionOwner.java
@@ -0,0 +1,23 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface MemberRegionOwner extends Owner {
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/Owned.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/Owned.java
new file mode 100644
index 0000000..807fe54
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/Owned.java
@@ -0,0 +1,23 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface Owned<T extends Owner> {
+    T getOwner();
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/Owner.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/Owner.java
new file mode 100644
index 0000000..37299cf
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/Owner.java
@@ -0,0 +1,24 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+public interface Owner {
+
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/PropertyLayoutData.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/PropertyLayoutData.java
new file mode 100644
index 0000000..6c66a32
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/PropertyLayoutData.java
@@ -0,0 +1,314 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.RenderDay;
+import org.apache.isis.applib.annotation.Repainting;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.layout.links.Link;
+import org.apache.isis.commons.internal.collections._Lists;
+
+/**
+ * Describes the layout of a single property, broadly corresponds to the {@link org.apache.isis.applib.annotation.PropertyLayout} annotation.
+ */
+@XmlRootElement(
+        name = "property"
+        )
+@XmlType(
+        name = "property"
+        , propOrder = {
+                "named"
+                , "describedAs"
+                , "actions"
+                , "metadataError"
+                , "link"
+        }
+        )
+public class PropertyLayoutData
+implements ActionLayoutDataOwner,
+Serializable,
+Owned<FieldSet>,
+HasCssClass, HasDescribedAs, HasHidden, HasNamed  {
+
+    private static final long serialVersionUID = 1L;
+
+    public PropertyLayoutData() {
+    }
+
+    public PropertyLayoutData(final String id) {
+        this.id = id;
+    }
+
+    private String id;
+
+    /**
+     * Property identifier, being the getter method without "get" or "is" prefix, first letter lower cased.
+     */
+    @XmlAttribute(required = true)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+
+
+    private String cssClass;
+
+    @Override
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    @Override
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+    private String describedAs;
+
+    @Override
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    @Override
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+    private Where hidden;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Where getHidden() {
+        return hidden;
+    }
+
+    @Override
+    public void setHidden(Where hidden) {
+        this.hidden = hidden;
+    }
+
+
+    private LabelPosition labelPosition;
+
+    @XmlAttribute(required = false)
+    public LabelPosition getLabelPosition() {
+        return labelPosition;
+    }
+
+    public void setLabelPosition(LabelPosition labelPosition) {
+        this.labelPosition = labelPosition;
+    }
+
+
+    private Integer multiLine;
+
+    @XmlAttribute(required = false)
+    public Integer getMultiLine() {
+        return multiLine;
+    }
+
+    public void setMultiLine(Integer multiLine) {
+        this.multiLine = multiLine;
+    }
+
+
+    private String named;
+
+    @Override
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    @Override
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+    private Boolean namedEscaped;
+
+    @Override
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    @Override
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+    private PromptStyle promptStyle;
+
+    @XmlAttribute(required = false)
+    public PromptStyle getPromptStyle() {
+        return promptStyle;
+    }
+
+    public void setPromptStyle(PromptStyle promptStyle) {
+        this.promptStyle = promptStyle;
+    }
+
+    private RenderDay renderDay;
+
+    @XmlAttribute(required = false)
+    public RenderDay getRenderDay() {
+        return renderDay;
+    }
+
+    public void setRenderDay(final RenderDay renderDay) {
+        this.renderDay = renderDay;
+    }
+
+
+    private Integer typicalLength;
+
+    @XmlAttribute(required = false)
+    public Integer getTypicalLength() {
+        return typicalLength;
+    }
+
+    public void setTypicalLength(Integer typicalLength) {
+        this.typicalLength = typicalLength;
+    }
+
+
+    @XmlAttribute(required = false)
+    public Boolean getUnchanging() {
+        return getRepainting() != null ? getRepainting() == Repainting.NO_REPAINT : null;
+    }
+
+    public void setUnchanging(Boolean unchanging) {
+        if(getRepainting() == null && unchanging != null) {
+            setRepainting(unchanging ? Repainting.NO_REPAINT : Repainting.REPAINT);
+        }
+    }
+
+
+    private Repainting repainting;
+
+    @XmlAttribute(required = false)
+    public Repainting getRepainting() {
+        return repainting;
+    }
+
+    public void setRepainting(final Repainting repainting) {
+        this.repainting = repainting;
+    }
+
+    private List<ActionLayoutData> actions = _Lists.newArrayList();
+
+    // no wrapper
+    @Override
+    @XmlElement(name = "action", required = false)
+    public List<ActionLayoutData> getActions() {
+        return actions;
+    }
+
+    @Override
+    public void setActions(List<ActionLayoutData> actionLayoutDatas) {
+        this.actions = actionLayoutDatas;
+    }
+
+
+    private FieldSet owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @Override
+    @XmlTransient
+    public FieldSet getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final FieldSet owner) {
+        this.owner = owner;
+    }
+
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+
+    private Link link;
+
+    /**
+     * The link to access this resource from the REST API (Restful Objects viewer).
+     *
+     * <p>
+     *     Populated by the framework automatically.
+     * </p>
+     */
+    @XmlElement(required = false)
+    public Link getLink() {
+        return link;
+    }
+
+    public void setLink(final Link link) {
+        this.link = link;
+    }
+
+
+    @Override
+    public String toString() {
+        return "PropertyLayoutData{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ServiceActionLayoutData.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ServiceActionLayoutData.java
new file mode 100644
index 0000000..507ae23
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ServiceActionLayoutData.java
@@ -0,0 +1,248 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.applib.layout.links.Link;
+
+/**
+ * Describes the layout of a single action, broadly corresponding to {@link org.apache.isis.applib.annotation.ActionLayout}.
+ *
+ * <p>
+ *  Note that {@link org.apache.isis.applib.annotation.ActionLayout#contributed()} is omitted because this only applies
+ *  to domain services.
+ * </p>
+ */
+@XmlRootElement(
+        name = "serviceAction"
+        )
+@XmlType(
+        name = "serviceAction"
+        , propOrder = {
+                "objectType"
+                , "id"
+                , "named"
+                , "namedEscaped"
+                , "bookmarking"
+                , "cssClass"
+                , "cssClassFa"
+                , "describedAs"
+                , "metadataError"
+                , "link"
+        }
+        )
+public class ServiceActionLayoutData implements Serializable {
+
+
+    private static final long serialVersionUID = 1L;
+
+    public ServiceActionLayoutData() {
+    }
+    public ServiceActionLayoutData(final String objectType, final String id) {
+        this.objectType = objectType;
+        this.id = id;
+    }
+
+
+    private String objectType;
+
+    @XmlAttribute(required = true)
+    public String getObjectType() {
+        return objectType;
+    }
+
+    public void setObjectType(final String objectType) {
+        this.objectType = objectType;
+    }
+
+
+
+    private String id;
+    /**
+     * Method name.
+     *
+     * <p>
+     *     Overloaded methods are not supported.
+     * </p>
+     */
+    @XmlAttribute(name="id", required = true)
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+
+
+    private BookmarkPolicy bookmarking;
+
+    @XmlAttribute(required = false)
+    public BookmarkPolicy getBookmarking() {
+        return bookmarking;
+    }
+
+    public void setBookmarking(BookmarkPolicy bookmarking) {
+        this.bookmarking = bookmarking;
+    }
+
+
+    private String cssClass;
+
+    @XmlAttribute(required = false)
+    public String getCssClass() {
+        return cssClass;
+    }
+
+    public void setCssClass(String cssClass) {
+        this.cssClass = cssClass;
+    }
+
+
+    private String cssClassFa;
+
+    @XmlAttribute(required = false)
+    public String getCssClassFa() {
+        return cssClassFa;
+    }
+
+    public void setCssClassFa(String cssClassFa) {
+        this.cssClassFa = cssClassFa;
+    }
+
+
+
+
+    private String describedAs;
+
+    @XmlElement(required = false)
+    public String getDescribedAs() {
+        return describedAs;
+    }
+
+    public void setDescribedAs(String describedAs) {
+        this.describedAs = describedAs;
+    }
+
+
+
+    private String named;
+
+    @XmlElement(required = false)
+    public String getNamed() {
+        return named;
+    }
+
+    public void setNamed(String named) {
+        this.named = named;
+    }
+
+
+
+    private Boolean namedEscaped;
+
+    @XmlAttribute(required = false)
+    public Boolean getNamedEscaped() {
+        return namedEscaped;
+    }
+
+    public void setNamedEscaped(Boolean namedEscaped) {
+        this.namedEscaped = namedEscaped;
+    }
+
+
+
+
+    private ServiceActionLayoutDataOwner owner;
+    /**
+     * Owner.
+     *
+     * <p>
+     *     Set programmatically by framework after reading in from XML.
+     * </p>
+     */
+    @XmlTransient
+    public ServiceActionLayoutDataOwner getOwner() {
+        return owner;
+    }
+
+    public void setOwner(final ServiceActionLayoutDataOwner owner) {
+        this.owner = owner;
+    }
+
+
+    private String metadataError;
+
+    /**
+     * For diagnostics; populated by the framework if and only if a metadata error.
+     */
+    @XmlElement(required = false)
+    public String getMetadataError() {
+        return metadataError;
+    }
+
+    public void setMetadataError(final String metadataError) {
+        this.metadataError = metadataError;
+    }
+
+
+    private Link link;
+
+    /**
+     * The link to access this resource from the REST API (Restful Objects viewer).
+     *
+     * <p>
+     *     Populated by the framework automatically.
+     * </p>
+     */
+    @XmlElement(required = false)
+    public Link getLink() {
+        return link;
+    }
+
+    public void setLink(final Link link) {
+        this.link = link;
+    }
+
+
+
+    @XmlTransient
+    public String getObjectTypeAndId() {
+        return getObjectType() + "#" + getId();
+    }
+
+
+    @Override
+    public String toString() {
+        return "ServiceActionLayoutData{" +
+                "objectType='" + objectType + '\'' +
+                ", id='" + id + '\'' +
+                '}';
+    }
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ServiceActionLayoutDataOwner.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ServiceActionLayoutDataOwner.java
new file mode 100644
index 0000000..0f98411
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/ServiceActionLayoutDataOwner.java
@@ -0,0 +1,26 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.component;
+
+import java.util.List;
+
+public interface ServiceActionLayoutDataOwner extends Owner {
+    List<ServiceActionLayoutData> getServiceActions();
+    void setServiceActions(List<ServiceActionLayoutData> actions);
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/package-info.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/package-info.java
new file mode 100644
index 0000000..3d98e4c
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/component/package-info.java
@@ -0,0 +1,39 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+/**
+ * The classes in this package provide layout metadata for a domain object's properties, collections and actions - the
+ * &quot;building blocks&quot; which then must be arranged into some sort of layout.
+ *
+ * <p>
+ *     The <code>bootstrap3</code> and <code>fixedcols</code> packages both provide different ways of doing the layout,
+ *     and both reference the classes in this package.
+ * </p>
+ *
+ */
+@javax.xml.bind.annotation.XmlSchema(
+        namespace = "http://isis.apache.org/applib/layout/component",
+        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
+        xmlns = {
+                @javax.xml.bind.annotation.XmlNs(
+                        namespaceURI = "http://isis.apache.org/applib/layout/component", prefix = "cpt")
+        }        // specifying the location seems to cause JaxbService#toXsd() to not generate the schema; not sure why...
+        //, location = ..."http://isis.apache.org/schema/metamodel/layout/common/common.xsd"
+        )
+package org.apache.isis.applib.layout.component;
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/grid/Grid.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/grid/Grid.java
new file mode 100644
index 0000000..01a3992
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/grid/Grid.java
@@ -0,0 +1,95 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.grid;
+
+import java.util.LinkedHashMap;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.DomainObjectLayoutData;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
+import org.apache.isis.applib.services.layout.LayoutService;
+
+/**
+ * All top-level page layout classes should implement this interface.
+ *
+ * <p>
+ *     It is used by the {@link LayoutService} as a common based type for any layouts read in from XML.
+ * </p>
+ */
+public interface Grid {
+
+    @Programmatic
+    Class<?> getDomainClass();
+
+    @Programmatic
+    void setDomainClass(final Class<?> domainClass);
+
+    @Programmatic
+    String getTnsAndSchemaLocation();
+
+    @Programmatic
+    void setTnsAndSchemaLocation(final String tnsAndSchemaLocation);
+
+    @Programmatic
+    boolean isNormalized();
+
+    @Programmatic
+    void setNormalized(final boolean normalized);
+
+    @Programmatic
+    LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById();
+
+    @Programmatic
+    LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById();
+
+    @Programmatic
+    LinkedHashMap<String, ActionLayoutData> getAllActionsById();
+
+    interface Visitor {
+        void visit(final DomainObjectLayoutData domainObjectLayoutData);
+
+        void visit(final ActionLayoutData actionLayoutData);
+
+        void visit(final PropertyLayoutData propertyLayoutData);
+
+        void visit(final CollectionLayoutData collectionLayoutData);
+
+        void visit(final FieldSet fieldSet);
+    }
+
+    class VisitorAdapter implements Visitor {
+        @Override public void visit(final DomainObjectLayoutData domainObjectLayoutData) {
+        }
+        @Override public void visit(final ActionLayoutData actionLayoutData) {
+        }
+        @Override public void visit(final PropertyLayoutData propertyLayoutData) {
+        }
+        @Override public void visit(final CollectionLayoutData collectionLayoutData) {
+        }
+        @Override public void visit(final FieldSet fieldSet) {
+        }
+    }
+
+    @Programmatic
+    void visit(final Grid.Visitor visitor);
+
+}
diff --git a/core/applib/src/main/doc/modules/applib-cm/examples/layout/grid/GridAbstract.java b/core/applib/src/main/doc/modules/applib-cm/examples/layout/grid/GridAbstract.java
new file mode 100644
index 0000000..7c6dfb7
--- /dev/null
+++ b/core/applib/src/main/doc/modules/applib-cm/examples/layout/grid/GridAbstract.java
@@ -0,0 +1,208 @@
+/*
+ *  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 agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.layout.grid;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.layout.component.ActionLayoutData;
+import org.apache.isis.applib.layout.component.ActionLayoutDataOwner;
+import org.apache.isis.applib.layout.component.CollectionLayoutData;
+import org.apache.isis.applib.layout.component.CollectionLayoutDataOwner;
+import org.apache.isis.applib.layout.component.FieldSet;
+import org.apache.isis.applib.layout.component.FieldSetOwner;
+import org.apache.isis.applib.layout.component.PropertyLayoutData;
+import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
+import org.apache.isis.applib.services.layout.LayoutService;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.collections._Maps;
+
+/**
+ * All top-level page layout classes should implement this interface.
+ *
+ * <p>
+ *     It is used by the {@link LayoutService} as a common based type for any layouts read in from XML.
+ * </p>
+ */
+@XmlTransient // ignore this class
+public abstract class GridAbstract implements Grid {
+
+    private Class<?> domainClass;
+
+    @Override
+    @Programmatic
+    @XmlTransient
+    public Class<?> getDomainClass() {
+        return domainClass;
+    }
+
+    @Override
+    @Programmatic
+    public void setDomainClass(final Class<?> domainClass) {
+        this.domainClass = domainClass;
+    }
+
+
+    private String tnsAndSchemaLocation;
+    @Override
+    @Programmatic
+    @XmlTransient
+    public String getTnsAndSchemaLocation() {
+        return tnsAndSchemaLocation;
+    }
+
+    @Override
+    @Programmatic
+    public void setTnsAndSchemaLocation(final String tnsAndSchemaLocation) {
+        this.tnsAndSchemaLocation = tnsAndSchemaLocation;
+    }
+
+
+    private boolean normalized;
+
+    @Override
+    @Programmatic
+    @XmlTransient
+    public boolean isNormalized() {
+        return normalized;
+    }
+
+    @Override
+    @Programmatic
+    public void setNormalized(final boolean normalized) {
+        this.normalized = normalized;
+    }
+
+
... 25642 lines suppressed ...


[isis] 23/25: ISIS-2062: moves site-xxx.yml to root directory

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 16c8f270d0032b85c552176777b276eb9f427cc4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Dec 17 00:31:35 2019 +0100

    ISIS-2062: moves site-xxx.yml to root directory
---
 antora/playbooks/site-core.yml                     | 73 ----------------------
 .../site-extensions.yml => site-extensions.yml     |  0
 .../site-incubator.yml => site-incubator.yml       |  0
 .../playbooks/site-legacy.yml => site-legacy.yml   |  0
 antora/playbooks/site-pjdo.yml => site-pjdo.yml    |  0
 .../site-refguide.yml => site-refguide.yml         |  0
 .../site-security.yml => site-security.yml         |  0
 .../playbooks/site-testing.yml => site-testing.yml |  0
 antora/playbooks/site-toc.yml => site-toc.yml      |  0
 .../site-userguide.yml => site-userguide.yml       |  0
 antora/playbooks/site-vro.yml => site-vro.yml      |  0
 antora/playbooks/site-vw.yml => site-vw.yml        |  0
 12 files changed, 73 deletions(-)

diff --git a/antora/playbooks/site-core.yml b/antora/playbooks/site-core.yml
deleted file mode 100644
index 3759e2a..0000000
--- a/antora/playbooks/site-core.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-site:
-  title: Apache Isis
-  url: https://isis.apache.org/
-  start_page: toc:ROOT:about.adoc
-
-content:
-  sources:
-
-# antora
-    - url: .
-      start_path: antora/components/toc # toc
-      branches: HEAD
-
-    - url: .
-      start_path: antora/components/core # core
-      branches: HEAD
-
-# core
-    - url: .
-      start_path: core/codegen-bytebuddy/src/main/doc # core
-      branches: HEAD
-    - url: .
-      start_path: core/commons/src/main/doc # core
-      branches: HEAD
-    - url: .
-      start_path: core/detached-tests/src/main/doc # core
-      branches: HEAD
-    - url: .
-      start_path: core/metamodel/src/main/doc # core
-      branches: HEAD
-    - url: .
-      start_path: core/runtime/src/main/doc # core
-      branches: HEAD
-    - url: .
-      start_path: core/webboot-springboot/src/main/doc # core
-      branches: HEAD
-    - url: .
-      start_path: core/runtime-services/src/main/doc # core
-      branches: HEAD
-    - url: .
-      start_path: core/webapp/src/main/doc # core
-      branches: HEAD
-
-# examples
-    - url: .
-      start_path: examples/smoketests/src/main/doc # core
-      branches: HEAD
-
-ui:
-  bundle:
-    url: ../isis-antora/build/ui-bundle.zip
-#    url: https://github.com/apache/isis-antora/blob/master/build/ui-bundle.zip?raw=true
-    snapshot: true
-  supplemental_files: antora/supplemental-ui
-
-asciidoc:
-  extensions:
-    - asciidoctor-plantuml
-    - ./antora/lib/lorem
-    - ./antora/lib/jira-issue
-    - ./antora/lib/powershell
-  attributes:
-    experimental: ""
-    idprefix: ""
-    idseparator: "-"
-    plantuml-server-url: "http://www.plantuml.com/plantuml"
-    isiscurr: "2.0.0-M2"
-    isisnext: "2.0.0-M3"
-    isisnextafter: "2.0.0-M4"
-    :isisdevafter: "2.0.0-M4-SNAPSHOT"
-
-output:
-  dir: antora/target/site
diff --git a/antora/playbooks/site-extensions.yml b/site-extensions.yml
similarity index 100%
rename from antora/playbooks/site-extensions.yml
rename to site-extensions.yml
diff --git a/antora/playbooks/site-incubator.yml b/site-incubator.yml
similarity index 100%
rename from antora/playbooks/site-incubator.yml
rename to site-incubator.yml
diff --git a/antora/playbooks/site-legacy.yml b/site-legacy.yml
similarity index 100%
rename from antora/playbooks/site-legacy.yml
rename to site-legacy.yml
diff --git a/antora/playbooks/site-pjdo.yml b/site-pjdo.yml
similarity index 100%
rename from antora/playbooks/site-pjdo.yml
rename to site-pjdo.yml
diff --git a/antora/playbooks/site-refguide.yml b/site-refguide.yml
similarity index 100%
rename from antora/playbooks/site-refguide.yml
rename to site-refguide.yml
diff --git a/antora/playbooks/site-security.yml b/site-security.yml
similarity index 100%
rename from antora/playbooks/site-security.yml
rename to site-security.yml
diff --git a/antora/playbooks/site-testing.yml b/site-testing.yml
similarity index 100%
rename from antora/playbooks/site-testing.yml
rename to site-testing.yml
diff --git a/antora/playbooks/site-toc.yml b/site-toc.yml
similarity index 100%
rename from antora/playbooks/site-toc.yml
rename to site-toc.yml
diff --git a/antora/playbooks/site-userguide.yml b/site-userguide.yml
similarity index 100%
rename from antora/playbooks/site-userguide.yml
rename to site-userguide.yml
diff --git a/antora/playbooks/site-vro.yml b/site-vro.yml
similarity index 100%
rename from antora/playbooks/site-vro.yml
rename to site-vro.yml
diff --git a/antora/playbooks/site-vw.yml b/site-vw.yml
similarity index 100%
rename from antora/playbooks/site-vw.yml
rename to site-vw.yml


[isis] 12/25: ISIS-2062: more messing about with scripts

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 e91e7d7e73783e57b02bea6fa1eedcffca414445
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:35:07 2019 +0000

    ISIS-2062: more messing about with scripts
---
 scripts/ci/_adoc-antora.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
index 263a696..c6f2106 100644
--- a/scripts/ci/_adoc-antora.sh
+++ b/scripts/ci/_adoc-antora.sh
@@ -19,7 +19,8 @@ if [ ! -f "$PLAYBOOK" ]; then
   PLAYBOOK=site.yml
 fi
 
-echo "\$PLAYBOOK = PROJECT_ROOT_PATH/$PLAYBOOK"
+PLAYBOOK=$PROJECT_ROOT_PATH/$PLAYBOOK
+echo "\$PLAYBOOK = $PLAYBOOK"
 
 if [ -z "$REVISION" ]; then
   if [ ! -z "$SHARED_VARS_FILE" ] && [ -f "$SHARED_VARS_FILE" ]; then


[isis] 25/25: ISIS-2062: docs for extensions

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 cbf1f96c36e02d6d43a6593c24826e2d42a2c29f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Dec 18 08:31:49 2019 +0100

    ISIS-2062: docs for extensions
---
 .../modules/ROOT/partials/component-nav.adoc       |   7 ++--
 .../security/modules/ROOT/pages/about.adoc         |   2 +-
 .../modules/ROOT/partials/component-nav.adoc       |   6 ----
 .../modules/ROOT/partials/component-nav.adoc       |   4 +--
 .../components/toc/modules/ROOT/pages/about.adoc   |   4 +--
 .../toc/modules/ROOT/pages/downloads/how-to.adoc   |   2 +-
 .../ROOT/pages/landing-page}/_attributes.adoc      |   2 +-
 .../ROOT/pages/{ => landing-page}/components.adoc  |   0
 .../extension-catalog.adoc}                        |  12 ++++++-
 .../ROOT/pages/{ => landing-page}/guides.adoc      |   2 +-
 .../ROOT/pages/{ => landing-page}/internal.adoc    |   0
 .../ROOT/pages/{ => landing-page}/quick-start.adoc |  14 +++++---
 .../modules/ROOT/pages/landing-page/releases.adoc  |  37 +++++++++++++++++++++
 .../ROOT/pages/{ => landing-page}/support.adoc     |   0
 .../ROOT/pages/more-thanks/more-thanks.adoc        |   2 +-
 .../what-is-apache-isis/common-use-cases.adoc      |   2 +-
 .../what-is-apache-isis/screencasts-older.adoc     |   4 +--
 .../pages/what-is-apache-isis/screencasts.adoc     |   2 +-
 .../toc/modules/ROOT/partials/module-nav.adoc      |   4 +--
 .../modules/comguide/pages/verifying-releases.adoc |   2 +-
 .../pages/hints-and-tips/datanucleus-enhancer.adoc |   4 +--
 .../pages/hints-and-tips/enabling-logging.adoc     |   2 +-
 .../how-run-fixtures-on-app-startup.adoc           |   2 +-
 .../toc/modules/devguide/pages/ide/eclipse.adoc    |   4 +--
 .../modules/btb/pages/deployment/neo4j.adoc        |   4 +--
 .../userguide/modules/btb/pages/i18n.adoc          |   2 +-
 .../userguide/modules/fun/pages/about.adoc         |   2 +-
 .../core-concepts/philosophy/how-eases-ddd.adoc    |   2 +-
 .../fun/pages/programming-model/properties.adoc    |   2 +-
 antora/supplemental-ui/index.html                  |  11 +++---
 .../pages/classes/AppManifest-bootstrapping.adoc   |   2 +-
 .../services/acceptheader/AcceptHeaderService.java |   7 ++--
 .../examples/services/command/CommandContext.java  |   2 --
 .../services/command/spi/CommandService.java       |   8 +++--
 .../services/iactn/InteractionContext.java         |  13 +++-----
 .../AcceptHeaderService.adoc                       |   6 ++--
 .../FixtureScriptsSpecificationProvider.adoc       |   2 +-
 .../config/pages/specifying-components.adoc        |   2 +-
 .../jdo/src/main/doc/modules/ROOT/nav.adoc         |   5 +--
 .../disabling-persistence-by-reachability.adoc     |   2 +-
 .../ROOT/pages/configuring/persistence-xml.adoc    |   2 +-
 .../doc/modules/ROOT/partials/component-nav.adoc   |   2 ++
 .../ROOT/{nav.adoc => partials/module-nav.adoc}    |   0
 .../pages/about/configuring-isis-to-use-shiro.adoc |   4 +--
 .../doc/modules/shiro/pages/about/ini-realm.adoc   |   2 +-
 .../pages/integ-test-support/bootstrapping.adoc    |   2 +-
 .../integ-test-support/maven-configuration.adoc    |   6 ++--
 .../unit-test-support/maven-configuration.adoc     |   6 ++--
 .../doc/modules/ROOT/pages/layout-resources.adoc   |   4 +--
 .../doc/modules/ROOT/pages/layout/file-based.adoc  |   2 +-
 .../doc/modules/spring/partials/module-nav.adoc    |   2 +-
 .../base/impl}/src/main/doc/antora.yml             |   0
 .../src/main/doc/modules/base}/_attributes.adoc    |   0
 .../base/impl/src/main/doc/modules/base}/nav.adoc  |   0
 .../main/doc/modules/base/pages}/_attributes.adoc  |   0
 .../src/main/doc/modules/base}/pages/about.adoc    |   2 +-
 .../doc/modules/base/partials}/_attributes.adoc    |   0
 .../main/doc/modules/base/partials/module-nav.adoc |   3 ++
 .../h2console => lib/docx/impl}/pom.xml            |  20 +++--------
 .../docx/impl}/src/main/doc/antora.yml             |   0
 .../src/main/doc/modules/docx}/_attributes.adoc    |   0
 .../docx/impl/src/main/doc/modules/docx}/nav.adoc  |   0
 .../main/doc/modules/docx/pages}/_attributes.adoc  |   0
 .../src/main/doc/modules/docx}/pages/about.adoc    |   2 +-
 .../doc/modules/docx/partials}/_attributes.adoc    |   0
 .../main/doc/modules/docx/partials/module-nav.adoc |   3 ++
 .../extensions/docx/dom/IsisModuleExtDocx.java}    |   7 ++--
 .../excel/impl}/src/main/doc/antora.yml            |   0
 .../src/main/doc/modules/excel}/_attributes.adoc   |   0
 .../impl/src/main/doc/modules/excel}/nav.adoc      |   0
 .../main/doc/modules/excel/pages}/_attributes.adoc |   0
 .../src/main/doc/modules/excel}/pages/about.adoc   |   2 +-
 .../doc/modules/excel}/partials/_attributes.adoc   |   0
 .../doc/modules/excel/partials/module-nav.adoc     |   3 ++
 .../{h2console => flywayjdo/impl}/pom.xml          |  22 ++++--------
 .../flywayjdo/impl/src/main/doc/antora.yml         |   2 ++
 .../main/doc/modules/flywayjdo}/_attributes.adoc   |   0
 .../impl/src/main/doc/modules/flywayjdo}/nav.adoc  |   0
 .../doc/modules/flywayjdo/pages}/_attributes.adoc  |   0
 .../main/doc/modules/flywayjdo}/pages/about.adoc   |   2 +-
 .../modules/flywayjdo}/partials/_attributes.adoc   |   0
 .../doc/modules/flywayjdo/partials/module-nav.adoc |   3 ++
 .../flywayjdo/dom/IsisModuleExtFlywayJdo.java}     |   7 ++--
 .../persistence/h2console/{ => impl}/pom.xml       |   2 +-
 .../impl}/src/main/doc/antora.yml                  |   0
 .../main/doc/modules/h2console}/_attributes.adoc   |   0
 .../src/main/doc/modules/h2console/nav.adoc        |   0
 .../doc/modules/h2console/pages}/_attributes.adoc  |   0
 .../main/doc/modules/h2console/pages/about.adoc    |   0
 .../modules/h2console}/partials/_attributes.adoc   |   0
 .../doc/modules/h2console/partials/module-nav.adoc |   3 ++
 .../h2console/dom/IsisModuleExtH2Console.java      |   0
 .../h2console/dom/services/H2ManagerMenu.java      |   0
 .../dom/webmodule/WebModuleH2Console.java          |   0
 .../doc/modules/h2console/partials/module-nav.adoc |   3 --
 .../persistence/hsqldbmgr/{ => impl}/pom.xml       |   2 +-
 .../hsqldbmgr/{ => impl}/src/main/doc/antora.yml   |   0
 .../main/doc/modules/hsqldbmgr/_attributes.adoc    |   0
 .../src/main/doc/modules/hsqldbmgr/nav.adoc        |   0
 .../doc/modules/hsqldbmgr/pages}/_attributes.adoc  |   0
 .../main/doc/modules/hsqldbmgr/pages/about.adoc    |   0
 .../modules/hsqldbmgr/partials/_attributes.adoc    |   0
 .../doc/modules/hsqldbmgr/partials/module-nav.adoc |   3 ++
 .../hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java      |   0
 .../hsqldbmgr/dom/services/HsqlDbManagerMenu.java  |   0
 .../doc/modules/hsqldbmgr/partials/module-nav.adoc |   3 --
 extensions/pom.xml                                 |  32 ++++++++++--------
 .../{lib => testing}/fakedata/fixture/.gitignore   |   0
 .../fakedata/fixture/logging-dn-enhance.properties |   0
 .../{lib => testing}/fakedata/fixture/pom.xml      |   0
 .../fixture/src/main/java/META-INF/persistence.xml |   0
 .../fixture/IsisModuleExtFakeDataFixtures.java     |   0
 .../fixture/demoapp/demomodule/dom/EnumOf3.java    |   0
 .../demomodule/dom/FakeDataDemoObjectWithAll.java  |   0
 .../demomodule/dom/FakeDataDemoObjectWithAll.png   | Bin
 .../dom/FakeDataDemoObjectWithAllMenu.java         |   0
 .../FakeDataDemoObjectWithAll_create3.java         |   0
 .../FakeDataDemoObjectWithAll_tearDown.java        |   0
 ...eDataDemoObjectWithAll_create_withFakeData.java |   0
 ...eDataDemoObjectWithAll_update_withFakeData.java |   0
 extensions/{lib => testing}/fakedata/impl/pom.xml  |   0
 .../testing/fakedata/impl/src/main/doc/antora.yml  |   2 ++
 .../main/doc/modules/fakedata}/_attributes.adoc    |   0
 .../impl/src/main/doc/modules/fakedata/nav.adoc    |   2 ++
 .../doc/modules/fakedata/pages}/_attributes.adoc   |   0
 .../main/doc/modules/fakedata}/pages/about.adoc    |   2 +-
 .../modules/fakedata}/partials/_attributes.adoc    |   0
 .../doc/modules/fakedata/partials/module-nav.adoc  |   3 ++
 .../fakedata/dom/IsisModuleExtFakeData.java        |   0
 .../dom/services/AbstractRandomValueGenerator.java |   0
 .../fakedata/dom/services/Addresses.java           |   0
 .../fakedata/dom/services/BigDecimals.java         |   0
 .../fakedata/dom/services/BigIntegers.java         |   0
 .../extensions/fakedata/dom/services/Books.java    |   0
 .../extensions/fakedata/dom/services/Booleans.java |   0
 .../extensions/fakedata/dom/services/Bytes.java    |   0
 .../extensions/fakedata/dom/services/Chars.java    |   0
 .../fakedata/dom/services/Collections.java         |   0
 .../extensions/fakedata/dom/services/Comms.java    |   0
 .../fakedata/dom/services/CreditCards.java         |   0
 .../extensions/fakedata/dom/services/Doubles.java  |   0
 .../extensions/fakedata/dom/services/Enums.java    |   0
 .../fakedata/dom/services/FakeDataService.java     |   0
 .../extensions/fakedata/dom/services/Floats.java   |   0
 .../extensions/fakedata/dom/services/Integers.java |   0
 .../fakedata/dom/services/IsisBlobs.java           |   0
 .../fakedata/dom/services/IsisClobs.java           |   0
 .../fakedata/dom/services/IsisMoneys.java          |   0
 .../fakedata/dom/services/IsisPasswords.java       |   0
 .../fakedata/dom/services/J8DateTimes.java         |   0
 .../fakedata/dom/services/J8LocalDates.java        |   0
 .../fakedata/dom/services/J8Periods.java           |   0
 .../fakedata/dom/services/JavaSqlDates.java        |   0
 .../fakedata/dom/services/JavaSqlTimestamps.java   |   0
 .../fakedata/dom/services/JavaUtilDates.java       |   0
 .../extensions/fakedata/dom/services/Longs.java    |   0
 .../extensions/fakedata/dom/services/Lorem.java    |   0
 .../extensions/fakedata/dom/services/Names.java    |   0
 .../extensions/fakedata/dom/services/Shorts.java   |   0
 .../extensions/fakedata/dom/services/Strings.java  |   0
 .../extensions/fakedata/dom/services/Urls.java     |   0
 .../extensions/fakedata/dom/services/Uuids.java    |   0
 .../services/blobs/Pawson-Naked-Objects-thesis.pdf | Bin
 .../dom/services/blobs/image01-150x150.jpg         | Bin
 .../dom/services/blobs/image01-2048x1536.jpg       | Bin
 .../dom/services/blobs/image01-240x180.jpg         | Bin
 .../dom/services/blobs/image01-4000x3000.jpg       | Bin
 .../dom/services/blobs/image01-640x480.jpg         | Bin
 .../dom/services/blobs/image02-150x150.jpg         | Bin
 .../dom/services/blobs/image02-2048x1536.jpg       | Bin
 .../dom/services/blobs/image02-240x180.jpg         | Bin
 .../dom/services/blobs/image02-4000x3000.jpg       | Bin
 .../dom/services/blobs/image02-640x480.jpg         | Bin
 .../dom/services/blobs/rick-mugridge-paper.pdf     | Bin
 .../fakedata/dom/services/clobs/RTF-Spec-1.7.rtf   |   0
 .../fakedata/dom/services/clobs/a_and_c.xml        |   0
 .../fakedata/dom/services/clobs/all_well.xml       |   0
 .../fakedata/dom/services/clobs/as_you.xml         |   0
 .../fakedata/dom/services/clobs/com_err.xml        |   0
 .../fakedata/dom/services/clobs/config.rtf         |   0
 .../fakedata/dom/services/clobs/coriolan.xml       |   0
 .../fakedata/dom/services/clobs/cymbelin.xml       |   0
 .../fakedata/dom/services/clobs/dream.xml          |   0
 .../fakedata/dom/services/clobs/dsssl.dtd          |   0
 .../extensions/fakedata/dom/services/clobs/fot.dtd |   0
 .../fakedata/dom/services/clobs/hamlet.xml         |   0
 .../fakedata/dom/services/clobs/hen_iv_1.xml       |   0
 .../fakedata/dom/services/clobs/hen_iv_2.xml       |   0
 .../fakedata/dom/services/clobs/hen_v.xml          |   0
 .../fakedata/dom/services/clobs/hen_vi_1.xml       |   0
 .../fakedata/dom/services/clobs/hen_vi_2.xml       |   0
 .../fakedata/dom/services/clobs/hen_vi_3.xml       |   0
 .../fakedata/dom/services/clobs/hen_viii.xml       |   0
 .../fakedata/dom/services/clobs/j_caesar.xml       |   0
 .../fakedata/dom/services/clobs/john.xml           |   0
 .../fakedata/dom/services/clobs/lear.xml           |   0
 .../extensions/fakedata/dom/services/clobs/lll.xml |   0
 .../fakedata/dom/services/clobs/m_for_m.xml        |   0
 .../fakedata/dom/services/clobs/m_wives.xml        |   0
 .../fakedata/dom/services/clobs/macbeth.xml        |   0
 .../fakedata/dom/services/clobs/merchant.xml       |   0
 .../fakedata/dom/services/clobs/much_ado.xml       |   0
 .../fakedata/dom/services/clobs/othello.xml        |   0
 .../fakedata/dom/services/clobs/pericles.xml       |   0
 .../fakedata/dom/services/clobs/play.dtd           |   0
 .../fakedata/dom/services/clobs/r_and_j.xml        |   0
 .../fakedata/dom/services/clobs/rich_ii.xml        |   0
 .../fakedata/dom/services/clobs/rich_iii.xml       |   0
 .../fakedata/dom/services/clobs/sample.rtf         |   0
 .../fakedata/dom/services/clobs/shaksper.htm       |   0
 .../fakedata/dom/services/clobs/style-sheet.dtd    |   0
 .../fakedata/dom/services/clobs/t_night.xml        |   0
 .../fakedata/dom/services/clobs/taming.xml         |   0
 .../fakedata/dom/services/clobs/tempest.xml        |   0
 .../fakedata/dom/services/clobs/testrtf.rtf        |   0
 .../fakedata/dom/services/clobs/timon.xml          |   0
 .../fakedata/dom/services/clobs/titus.xml          |   0
 .../fakedata/dom/services/clobs/troilus.xml        |   0
 .../fakedata/dom/services/clobs/two_gent.xml       |   0
 .../isis/extensions/fakedata/dom/services/clobs/vs |   0
 .../isis/extensions/fakedata/dom/services/clobs/vx |   0
 .../fakedata/dom/services/clobs/win_tale.xml       |   0
 .../extensions/fakedata/dom/services/clobs/xml.dcl |   0
 .../extensions/fakedata/dom/services/clobs/xml.soc |   0
 .../fakedata/dom/services/FakeDataServiceTest.java |   0
 .../fakedata/integtests/log4j2-test.xml            |   0
 .../{lib => testing}/fakedata/integtests/pom.xml   |   0
 .../FakeDataModuleIntegTestAbstract.java           |   0
 .../integtests/tests/Bootstrap_IntegTest.java      |   0
 .../fakedata/integtests/tests/Smoke_IntegTest.java |   0
 .../fakedata/integtests/toDoItems-actual.xlsx      | Bin
 .../fakedata/integtests/translations.pot           |   0
 .../pages/fixture-scripts/api-and-usage.adoc       |  10 +++---
 .../bdd-spec-support/maven-configuration.adoc      |   2 +-
 .../pages/bdd-spec-support/writing-a-bdd-spec.adoc |   4 +--
 .../{lib => testing}/unittestsupport/impl/pom.xml  |   0
 .../unittestsupport/impl/src/main/doc/antora.yml   |   2 ++
 .../unit-test-support-ext}/_attributes.adoc        |   0
 .../doc/modules/unit-test-support-ext/nav.adoc     |   2 ++
 .../unit-test-support-ext/pages}/_attributes.adoc  |   0
 .../unit-test-support-ext}/pages/about.adoc        |   5 ++-
 .../partials/_attributes.adoc                      |   0
 .../unit-test-support-ext/partials/module-nav.adoc |   3 ++
 .../dom/IsisModuleExtUnitTestSupport.java          |   0
 .../unittestsupport/dom/assertions/Asserting.java  |   0
 .../dom/bean/AbstractBeanPropertiesTest.java       |   0
 .../dom/bean/FixtureDatumFactoriesForAnyPojo.java  |   0
 .../dom/bean/FixtureDatumFactoriesForApplib.java   |   0
 .../dom/bean/FixtureDatumFactoriesForJoda.java     |   0
 .../unittestsupport/dom/bean/PojoTester.java       |   0
 .../unittestsupport/dom/matchers/IsisMatchers.java |   0
 .../dom/privatecons/PrivateConstructorTester.java  |   0
 .../unittestsupport/dom/reflect/ReflectUtils.java  |   0
 .../dom/repo/FinderInteraction.java                |   0
 .../unittestsupport/dom/valuetypes/VT.java         |   0
 .../dom/bean/PojoTesterTest_interference.java      |   0
 .../src/main/doc/modules/mvn/pages/intro.adoc      |   4 +--
 .../src/main/doc/modules/mvn/pages/validate.adoc   |   2 +-
 site.yml                                           |  26 +++++++++++++--
 .../main/doc/modules/helloworld/pages/about.adoc   |   4 +--
 .../main/doc/modules/simpleapp/pages/about.adoc    |   6 ++--
 261 files changed, 252 insertions(+), 177 deletions(-)

diff --git a/antora/components/extensions/modules/ROOT/partials/component-nav.adoc b/antora/components/extensions/modules/ROOT/partials/component-nav.adoc
index da21bef..d0e307b 100644
--- a/antora/components/extensions/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/extensions/modules/ROOT/partials/component-nav.adoc
@@ -3,8 +3,7 @@ include::extensions:spring:partial$module-nav.adoc[]
 include::extensions:h2console:partial$module-nav.adoc[]
 include::extensions:hsqldbmgr:partial$module-nav.adoc[]
 
-//include::extensions:base:partial$module-nav.adoc[]
-//include::extensions:excel:partial$module-nav.adoc[]
-//include::extensions:fakedata:partial$module-nav.adoc[]
-//include::extensions:unittestsupport:partial$module-nav.adoc[]
+include::extensions:base:partial$module-nav.adoc[]
+include::extensions:docx:partial$module-nav.adoc[]
+include::extensions:excel:partial$module-nav.adoc[]
 
diff --git a/antora/components/security/modules/ROOT/pages/about.adoc b/antora/components/security/modules/ROOT/pages/about.adoc
index b30b7f5..d5072b4 100644
--- a/antora/components/security/modules/ROOT/pages/about.adoc
+++ b/antora/components/security/modules/ROOT/pages/about.adoc
@@ -33,7 +33,7 @@ Shiro in turn uses the concept of a _realm_ as a source for both authentication
 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:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[SimpleApp] archetypes are both configured to use this realm.
+The link:https://github.com/apache/isis-app-helloworld[HelloWorld] and link:https://github.com/apache/isis-app-simpleapp[SimpleApp] archetypes are both configured to use this realm.
 
 Shiro also ships with an implementation of an LDAP-based realm; LDAP is often used to manage user/passwords and corresponding user groups.
 Apache Isis in turn extends this with its `IsisLdapRealm`, which provides more flexibility for both group/role and role/permissions management.
diff --git a/antora/components/security/modules/ROOT/partials/component-nav.adoc b/antora/components/security/modules/ROOT/partials/component-nav.adoc
index febbe3a..45e6069 100644
--- a/antora/components/security/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/security/modules/ROOT/partials/component-nav.adoc
@@ -1,15 +1,9 @@
 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:shiro-realm-ldap:partial$module-nav.adoc[]
-
 include::security:keycloak:partial$module-nav.adoc[]
-
 include::security:ROOT:partial$module-nav2.adoc[]
 
 * Extensions
diff --git a/antora/components/testing/modules/ROOT/partials/component-nav.adoc b/antora/components/testing/modules/ROOT/partials/component-nav.adoc
index 44234b8..dba568c 100644
--- a/antora/components/testing/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/testing/modules/ROOT/partials/component-nav.adoc
@@ -1,9 +1,9 @@
-// the navs of all modules in this component use this file as their own nav's.
-
 include::testing:ROOT:partial$module-nav.adoc[]
 include::testing:unit-test-support:partial$module-nav.adoc[]
+include::testing:unit-test-support-ext:partial$module-nav.adoc[]
 include::testing:integ-test-support:partial$module-nav.adoc[]
 include::testing:specsupport:partial$module-nav.adoc[]
 include::testing:fixtures:partial$module-nav.adoc[]
+include::testing:fakedata:partial$module-nav.adoc[]
 
 
diff --git a/antora/components/toc/modules/ROOT/pages/about.adoc b/antora/components/toc/modules/ROOT/pages/about.adoc
index b299ec9..8f25875 100644
--- a/antora/components/toc/modules/ROOT/pages/about.adoc
+++ b/antora/components/toc/modules/ROOT/pages/about.adoc
@@ -22,8 +22,8 @@ include::_attributes.adoc[]
 [discrete]
 == Starter Apps
 
-* xref:starters:helloworld:about.adoc[Hello World]
-* xref:starters:simpleapp:about.adoc[SimpleApp]
+* link:https://github.com/apache/isis-app-helloworld[Hello World]
+* link:https://github.com/apache/isis-app-simpleapp[SimpleApp]
 
 |
 [discrete]
diff --git a/antora/components/toc/modules/ROOT/pages/downloads/how-to.adoc b/antora/components/toc/modules/ROOT/pages/downloads/how-to.adoc
index ff16927..d8268c5 100644
--- a/antora/components/toc/modules/ROOT/pages/downloads/how-to.adoc
+++ b/antora/components/toc/modules/ROOT/pages/downloads/how-to.adoc
@@ -13,7 +13,7 @@ Use for prototyping or production.
 
 == Getting Started
 
-If you just want to get going quickly, we suggest using our xref:starters:simpleapp:about.adoc[Maven archetype].
+If you just want to get going quickly, we suggest using our link:https://github.com/apache/isis-app-simpleapp[Maven archetype].
 
 
 
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages/_attributes.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/_attributes.adoc
similarity index 81%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages/_attributes.adoc
copy to antora/components/toc/modules/ROOT/pages/landing-page/_attributes.adoc
index e8ada7c..d011536 100644
--- a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages/_attributes.adoc
+++ b/antora/components/toc/modules/ROOT/pages/landing-page/_attributes.adoc
@@ -1,4 +1,4 @@
 ifndef::env-site,env-github[]
-:moduledir: ..
+:moduledir: ../..
 include::{moduledir}/_attributes.adoc[]
 endif::[]
diff --git a/antora/components/toc/modules/ROOT/pages/components.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/components.adoc
similarity index 100%
rename from antora/components/toc/modules/ROOT/pages/components.adoc
rename to antora/components/toc/modules/ROOT/pages/landing-page/components.adoc
diff --git a/antora/components/toc/modules/ROOT/pages/extensions.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/extension-catalog.adoc
similarity index 75%
rename from antora/components/toc/modules/ROOT/pages/extensions.adoc
rename to antora/components/toc/modules/ROOT/pages/landing-page/extension-catalog.adoc
index 01bdad8..2599e3a 100644
--- a/antora/components/toc/modules/ROOT/pages/extensions.adoc
+++ b/antora/components/toc/modules/ROOT/pages/landing-page/extension-catalog.adoc
@@ -1,4 +1,4 @@
-= Extensions
+= Extension Catalog
 :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[]
 
@@ -10,4 +10,14 @@ The remainder can be found in the:
 
 * xref:extensions:ROOT:about.adoc[Extensions Catalog].
 
+There are two further catalogs:
+
+* xref:incubator:ROOT:about.adoc[Incubator Catalog]
++
+Extensions that are experimental or unstable, but which may end up graduating to the extensions catalog
+
+* xref:legacy:ROOT:about.adoc[Legacy Catalog]
++
+Functionality that has been deprecated or has become defunct, and which is likely to be removed in future versions.
+
 
diff --git a/antora/components/toc/modules/ROOT/pages/guides.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/guides.adoc
similarity index 95%
rename from antora/components/toc/modules/ROOT/pages/guides.adoc
rename to antora/components/toc/modules/ROOT/pages/landing-page/guides.adoc
index 0b294f7..d22478e 100644
--- a/antora/components/toc/modules/ROOT/pages/guides.adoc
+++ b/antora/components/toc/modules/ROOT/pages/landing-page/guides.adoc
@@ -6,7 +6,7 @@ This page lists the user and reference guides available for developers to create
 
 
 * xref:userguide:ROOT:about.adoc[User Guide] (Fundamentals & Beyond)
-* xref:refguide:ROOT/about.adoc[Reference Guide]
+* xref:refguide:ROOT:about.adoc[Reference Guide]
 * xref:security:ROOT:about.adoc[Security]
 * xref:testing:ROOT:about.adoc[Testing & Prototyping]
 
diff --git a/antora/components/toc/modules/ROOT/pages/internal.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/internal.adoc
similarity index 100%
rename from antora/components/toc/modules/ROOT/pages/internal.adoc
rename to antora/components/toc/modules/ROOT/pages/landing-page/internal.adoc
diff --git a/antora/components/toc/modules/ROOT/pages/quick-start.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/quick-start.adoc
similarity index 54%
rename from antora/components/toc/modules/ROOT/pages/quick-start.adoc
rename to antora/components/toc/modules/ROOT/pages/landing-page/quick-start.adoc
index 41f46d6..1207afd 100644
--- a/antora/components/toc/modules/ROOT/pages/quick-start.adoc
+++ b/antora/components/toc/modules/ROOT/pages/landing-page/quick-start.adoc
@@ -2,9 +2,15 @@
 :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[]
 
-This page links to the two Maven archetypes that you can use to get started with your application.
+To get started with a new application, use one of the two git repos on Github that provide a starter app.
 
-== Starter Apps
+* link:https://github.com/apache/isis-app-helloworld[HelloWorld]
++
+This is a very minimal app, intended just as a starting point to learn what the framework is all about.
+
+* link:https://github.com/apache/isis-app-simpleapp[Simple App]
++
+This app has the same functionality as _HelloWorld_, but is structured so it can be used as a starting point for developing your own applications.
++
+It also includes some xref:testing:integ-test-support[integration tests], xref:testing:fixtures:about.adoc[fixtures], and xref:testing:spec-support[BDD (Cucumber)] specs.
 
-* xref:starters:helloworld:about.adoc[HelloWorld]
-* xref:starters:simpleapp:about.adoc[SimpleApp]
diff --git a/antora/components/toc/modules/ROOT/pages/landing-page/releases.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/releases.adoc
new file mode 100644
index 0000000..a1c0159
--- /dev/null
+++ b/antora/components/toc/modules/ROOT/pages/landing-page/releases.adoc
@@ -0,0 +1,37 @@
+= Releases
+: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 easiest way to consume the framework is to use one of the xref:toc:ROOT:landing-page/quick-start.adoc[starter apps].
+Then, just update the `<version>` of the parent starter:
+
+[source,xml]
+----
+<parent>
+    <groupId>org.apache.isis.app</groupId>
+    <artifactId>isis-app-starter-parent</artifactId>
+    <version>2.0.0</version>                            <!--1-->
+</parent>
+----
+<1> update as required.
+
+If you want though you can also xref:toc:ROOT:downloads/how-to.adoc[download] the source code and build it directly.
+
+For each release, consult:
+
+* xref:toc:relnotes:about.adoc[Release Notes]
++
+to learn about new features, improvements and bug fixes
+
+* xref:toc:mignotes:about.adoc[Migration Notes]
++
+to learn how to migrate to new features / away from deprecated or removed features.
+
+If you like to live on the bleeding edge, there are also nightly builds of the framework.
+
+* link:https://github.com/apache-isis-committers/isis-nightly[CI]
+* link:https://repo.incode.cloud/[Maven Repo]
+* link:https://apache-isis-committers.github.io/isis-nightly/toc/about.html[Website preview]
+
+Although these are maintained and used by the framework's committers, do be aware that *these are _not_ official ASF releases*; they are provided as a convenience only.
diff --git a/antora/components/toc/modules/ROOT/pages/support.adoc b/antora/components/toc/modules/ROOT/pages/landing-page/support.adoc
similarity index 100%
rename from antora/components/toc/modules/ROOT/pages/support.adoc
rename to antora/components/toc/modules/ROOT/pages/landing-page/support.adoc
diff --git a/antora/components/toc/modules/ROOT/pages/more-thanks/more-thanks.adoc b/antora/components/toc/modules/ROOT/pages/more-thanks/more-thanks.adoc
index f30f66b..bdf76d8 100644
--- a/antora/components/toc/modules/ROOT/pages/more-thanks/more-thanks.adoc
+++ b/antora/components/toc/modules/ROOT/pages/more-thanks/more-thanks.adoc
@@ -24,7 +24,7 @@ In addition to the http://www.apache.org/foundation/thanks.html[support given to
 
 
 |image::more-thanks/icons8-logo.png[link="http://icons8.com"]
-|Icons8, for selected icons on this website and in the link:https://github.com/apache/isis/tree/master/example/application/simpleapp/dom/src/main/resources/images[simpleapp] used to generate the xref:starters:simpleapp:about.adoc[simpleapp archetype]
+|Icons8, for selected icons on this website and in the link:https://github.com/apache/isis/tree/master/example/application/simpleapp/dom/src/main/resources/images[simpleapp] used to generate the link:https://github.com/apache/isis-app-simpleapp[simpleapp archetype]
 
 |===
 
diff --git a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc
index 9bc860e..6198373 100644
--- a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc
+++ b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/common-use-cases.adoc
@@ -22,7 +22,7 @@ Once you've sketched out your domain model, you can then either start-over using
 One of the original motivations for Apache Isis itself was to be able automatically generate a user interface for a domain object model.
 
 Apache Isis' has a pluggable architecture allowing different user interface technologies.
- The principal implementation (as configured by the xref:starters:simpleapp:about.adoc[SimpleApp archetype]) is the xref:vw:ROOT:about.adoc[Wicket viewer].
+ The principal implementation (as configured by the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]) is the xref:vw:ROOT:about.adoc[Wicket viewer].
   This provides an appealing default user interface, with the ability to customize the user interface by writing new http://wicket.apache.org[Apache Wicket] components.
 Some third-party components can be found in the (non-ASF) link:https://platform.incode.org[Incode Platform^].
 
diff --git a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts-older.adoc b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts-older.adoc
index 35bd9ec..21dce06 100644
--- a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts-older.adoc
+++ b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts-older.adoc
@@ -81,7 +81,7 @@ Learn more xref:toc:devguide:about.adoc#intellij[here]
 
 |Commands and Auditing (v1.6.0) +
 
-_Configuring the command and auditing add-on modules for the xref:starters:simpleapp:about.adoc[SimpleApp]._ +
+_Configuring the command and auditing add-on modules for the link:https://github.com/apache/isis-app-simpleapp[SimpleApp]._ +
 
 Learn more at the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command and audit SPI modules
 
@@ -90,7 +90,7 @@ Learn more at the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s
 
 |Security (v1.6.0) +
 
-_Configuring the security add-on module for for the xref:starters:simpleapp:about.adoc[SimpleApp]._ +
+_Configuring the security add-on module for for the link:https://github.com/apache/isis-app-simpleapp[SimpleApp]._ +
 
 Learn more at the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s security SPI module.
 
diff --git a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
index a16bcf3..7d86993 100644
--- a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
+++ b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
@@ -45,7 +45,7 @@ Searching and using the Apache Isis docs
 
 
 |link:https://www.youtube.com/watch?v=OTNHR5EdAs8[001^] +
-Generating an app using the xref:starters:simpleapp:about.adoc[SimpleApp archetype]
+Generating an app using the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]
 
 |x||||||||||
 
diff --git a/antora/components/toc/modules/ROOT/partials/module-nav.adoc b/antora/components/toc/modules/ROOT/partials/module-nav.adoc
index da62376..a2e3b3f 100644
--- a/antora/components/toc/modules/ROOT/partials/module-nav.adoc
+++ b/antora/components/toc/modules/ROOT/partials/module-nav.adoc
@@ -7,8 +7,8 @@
 
 * Starter Apps
 
-** xref:starters:helloworld:about.adoc[HelloWorld]
-** xref:starters:simpleapp:about.adoc[SimpleApp]
+** link:https://github.com/apache/isis-app-helloworld[HelloWorld]
+** link:https://github.com/apache/isis-app-simpleapp[SimpleApp]
 
 * Demos & Tutorials
 
diff --git a/antora/components/toc/modules/comguide/pages/verifying-releases.adoc b/antora/components/toc/modules/comguide/pages/verifying-releases.adoc
index 52eb4c6..892b9f7 100644
--- a/antora/components/toc/modules/comguide/pages/verifying-releases.adoc
+++ b/antora/components/toc/modules/comguide/pages/verifying-releases.adoc
@@ -134,7 +134,7 @@ Alternatively, you can xref:toc:comguide:verifying-releases.adoc#casting-a-vote[
 
 == (Optional) Verifying binary artifacts
 
-You can verify the binary releases by configuring your local Maven install to point to the Maven staging repository (or repositories) and then using them, eg to run the xref:starters:helloworld:about.adoc[HelloWorld archetype] or the xref:starters:simpleapp:about.adoc[SimpleApp archetype] and running the resultant app.
+You can verify the binary releases by configuring your local Maven install to point to the Maven staging repository (or repositories) and then using them, eg to run the link:https://github.com/apache/isis-app-helloworld[HelloWorld archetype] or the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] and running the resultant app.
 
 Configuring your local Maven install amounts to updating the `~/.m2/settings.xml` file:
 
diff --git a/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc b/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc
index 2d2377c..9efd0f3 100644
--- a/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc
+++ b/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc
@@ -20,7 +20,7 @@ What this means is that the enhancer -- available as both a Maven plugin and as
 
 If working from the Maven command line, JDO enhancement is done using the `datanucleus-maven-plugin`.
 
-Both the xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[SimpleApp] Maven archetypes generate applications that have this plugin pre-configured.
+Both the link:https://github.com/apache/isis-app-helloworld[HelloWorld] and link:https://github.com/apache/isis-app-simpleapp[SimpleApp] Maven archetypes generate applications that have this plugin pre-configured.
 
 
 
@@ -41,7 +41,7 @@ It's also a good idea to ensure that every domain module(s) containing entities
 ----
 <1> change as required; typically is the name of the domain module.
 
-Again, the applications generated by both the xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[Simpleapp] Maven archetypes do this.
+Again, the applications generated by both the link:https://github.com/apache/isis-app-helloworld[HelloWorld] and link:https://github.com/apache/isis-app-simpleapp[Simpleapp] Maven archetypes do this.
 
 
 [WARNING]
diff --git a/antora/components/toc/modules/devguide/pages/hints-and-tips/enabling-logging.adoc b/antora/components/toc/modules/devguide/pages/hints-and-tips/enabling-logging.adoc
index ca5f712..1552893 100644
--- a/antora/components/toc/modules/devguide/pages/hints-and-tips/enabling-logging.adoc
+++ b/antora/components/toc/modules/devguide/pages/hints-and-tips/enabling-logging.adoc
@@ -18,7 +18,7 @@ As per the http://www.datanucleus.org/products/accessplatform/logging.html[DN lo
 * In the JDBC Driver +
 +
 Configure `log4jdbc` JDBC rather than the vanilla driver (see `WEB-INF/persistor_datanucleus.properties`) and configure log4j logging (see `WEB-INF/logging.properties`).
-There are examples of both in the xref:starters:simpleapp:about.adoc[SimpleApp archetype].
+There are examples of both in the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype].
 
 * In the database +
 +
diff --git a/antora/components/toc/modules/devguide/pages/hints-and-tips/how-run-fixtures-on-app-startup.adoc b/antora/components/toc/modules/devguide/pages/hints-and-tips/how-run-fixtures-on-app-startup.adoc
index f3664e5..23493f4 100644
--- a/antora/components/toc/modules/devguide/pages/hints-and-tips/how-run-fixtures-on-app-startup.adoc
+++ b/antora/components/toc/modules/devguide/pages/hints-and-tips/how-run-fixtures-on-app-startup.adoc
@@ -14,7 +14,7 @@ Use events?_
 
 
 The standard approach is to use xref:fixtures:ROOT:about.adoc[fixture scripts].
-These can be run in on start-up typically by being specified in the xref:refguide:applib-cm:classes/AppManifest-bootstrapping.adoc[`AppManifest`], see for example the xref:starters:simpleapp:about.adoc[SimpleApp archetype].
+These can be run in on start-up typically by being specified in the xref:refguide:applib-cm:classes/AppManifest-bootstrapping.adoc[`AppManifest`], see for example the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype].
 
 Alternatively just set `isis.fixtures` and `isis.persistor.datanucleus.install-fixtures` properties.
 
diff --git a/antora/components/toc/modules/devguide/pages/ide/eclipse.adoc b/antora/components/toc/modules/devguide/pages/ide/eclipse.adoc
index eb4c0f8..2fb6972 100644
--- a/antora/components/toc/modules/devguide/pages/ide/eclipse.adoc
+++ b/antora/components/toc/modules/devguide/pages/ide/eclipse.adoc
@@ -38,7 +38,7 @@ To install, download each XML file, then go to `Windows > Preferences > Java > E
 
 == Install Project Lombok
 
-The xref:starters:simpleapp:about.adoc[SimpleApp archetype] uses link:http://projectlombok.org[Project Lombok] annotations (`@Getter` and `@Setter` and so on) to reduce the boilerplate.
+The link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] uses link:http://projectlombok.org[Project Lombok] annotations (`@Getter` and `@Setter` and so on) to reduce the boilerplate.
 For Eclipse IDE this requires an link:https://projectlombok.org/setup/eclipse[installation step]:
 
 * Locate the `lombok.jar` jar file:
@@ -120,7 +120,7 @@ DataNucleus' enhancer uses the domain object model's own classpath to reference
 So, even though your domain objects are unlikely to depend on DataNucleus, these references must still be present.
 
 See the section in xref:toc:devguide:hints-and-tips/datanucleus-enhancer.adoc[DataNucleus enhancer] for details of the contents of the `pom.xml`.
-Chances are it is already set up from running the xref:starters:helloworld:about.adoc[HelloWorld] or the xref:starters:simpleapp:about.adoc[SimpleApp] archetype.
+Chances are it is already set up from running the link:https://github.com/apache/isis-app-helloworld[HelloWorld] or the link:https://github.com/apache/isis-app-simpleapp[SimpleApp] archetype.
 
 
 Then, tell DataNucleus to use the project classpath:
diff --git a/antora/components/userguide/modules/btb/pages/deployment/neo4j.adoc b/antora/components/userguide/modules/btb/pages/deployment/neo4j.adoc
index 2d094e2..a9eeb86 100644
--- a/antora/components/userguide/modules/btb/pages/deployment/neo4j.adoc
+++ b/antora/components/userguide/modules/btb/pages/deployment/neo4j.adoc
@@ -46,14 +46,14 @@ Add the following dependency to the `webapp` project's `pom.xml`:
 <1> for Isis v1.9.0, use the value shown.
 For Isis v1.8.0, use 3.2.3.
 
-In the xref:starters:simpleapp:about.adoc[SimpleApp archetype] this is defined under the "neo4j" profile so can be activated using `-P neo4j`.
+In the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] this is defined under the "neo4j" profile so can be activated using `-P neo4j`.
 
 
 == Try it out!
 
 If you want to quickly try out neo4j for yourself:
 
-* run the xref:starters:simpleapp:about.adoc[SimpleApp archetype] (v1.8.0)
+* run the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] (v1.8.0)
 
 * build the app:
 
diff --git a/antora/components/userguide/modules/btb/pages/i18n.adoc b/antora/components/userguide/modules/btb/pages/i18n.adoc
index 30b542c..859816a 100644
--- a/antora/components/userguide/modules/btb/pages/i18n.adoc
+++ b/antora/components/userguide/modules/btb/pages/i18n.adoc
@@ -129,7 +129,7 @@ Moreover, these messages must be captured in the `.pot` file such that they can
 The first part of the puzzle is tackled by an extension to Apache Isis' programming model.
 Whereas previously the `disableXxx()` / `validateXxx()` / `title()` methods could only return a `java.lang.String`, they may now optionally return a `TranslatableString` (defined in Isis applib) instead.
 
-Here's a (silly) example from the xref:starters:simpleapp:about.adoc[SimpleApp archetype]:
+Here's a (silly) example from the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]:
 
 [source,java]
 ----
diff --git a/antora/components/userguide/modules/fun/pages/about.adoc b/antora/components/userguide/modules/fun/pages/about.adoc
index dd761ed..bc73aa0 100644
--- a/antora/components/userguide/modules/fun/pages/about.adoc
+++ b/antora/components/userguide/modules/fun/pages/about.adoc
@@ -2,7 +2,7 @@
 :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[]
 
-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:starters:helloworld:about.adoc[helloworld starter app].
+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 link:https://github.com/apache/isis-app-helloworld[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/antora/components/userguide/modules/fun/pages/core-concepts/philosophy/how-eases-ddd.adoc b/antora/components/userguide/modules/fun/pages/core-concepts/philosophy/how-eases-ddd.adoc
index 2410875..05239e1 100644
--- a/antora/components/userguide/modules/fun/pages/core-concepts/philosophy/how-eases-ddd.adoc
+++ b/antora/components/userguide/modules/fun/pages/core-concepts/philosophy/how-eases-ddd.adoc
@@ -54,7 +54,7 @@ If we are using code as the primary means of expressing the model, then we need
 We could generate UML diagrams and the like from code. That will work for some members of the business community, but not for everyone. Or we could generate a PDF document from Javadoc comments, but comments aren't code and so the document may be inaccurate.  Anyway, even if we do create such a document, not everyone will read it.
 
 A better way to represent the model is to show it in action as a working prototype.
-As we show in the xref:starters:helloworld:about.adoc[Getting Started] section, Apache Isis enables this with ease. Such prototypes bring the domain model to life, engaging the audience in a way that a piece of paper never can.
+As we show in the link:https://github.com/apache/isis-app-helloworld[Getting Started] section, Apache Isis enables this with ease. Such prototypes bring the domain model to life, engaging the audience in a way that a piece of paper never can.
 
 Moreover, with Apache Isis prototypes, the domain model will come shining through. If there are mistakes or misunderstandings in the domain model (inevitable when building any complex system), they will be obvious to all.
 
diff --git a/antora/components/userguide/modules/fun/pages/programming-model/properties.adoc b/antora/components/userguide/modules/fun/pages/programming-model/properties.adoc
index 7f7c70a..0116771 100644
--- a/antora/components/userguide/modules/fun/pages/programming-model/properties.adoc
+++ b/antora/components/userguide/modules/fun/pages/programming-model/properties.adoc
@@ -26,7 +26,7 @@ It's also possible (using annotations) to define a link table to hold foreign ke
 Apache Isis recognises some of these annotations for JDO/DataNucleus and JAXB and infers some domain semantics from them (for example, the maximum allowable length of a string property).
 
 Since writing getter and setter methods adds quite a bit of boilerplate, it's common to use link:https://projectlombok.org/[Project Lombok] to code generate these methods at compile time (using Java's annotation processor) simply by adding the `@lombok.Getter` and `@lombok.Setter` annotations to the field.
-The xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[SimpleApp] archetypes use this approach.
+The link:https://github.com/apache/isis-app-helloworld[HelloWorld] and link:https://github.com/apache/isis-app-simpleapp[SimpleApp] archetypes use this approach.
 
 
 == Value vs Reference Types
diff --git a/antora/supplemental-ui/index.html b/antora/supplemental-ui/index.html
index d4f78f0..28f02fb 100644
--- a/antora/supplemental-ui/index.html
+++ b/antora/supplemental-ui/index.html
@@ -100,11 +100,12 @@
           <ul>
             <li><a href="toc/about.html">Table of Contents</a></li>
             <li><hr/></li>
-            <li><a href="toc/quick-start.html">Quick Start</a></li>
-            <li><a href="toc/guides.html">Guides</a></li>
-            <li><a href="toc/components.html">Components</a></li>
-            <li><a href="toc/extensions.html">Extensions</a></li>
-            <li><a href="toc/support.html">Support</a></li>
+            <li><a href="toc/landing-page/quick-start.html">Quick Start</a></li>
+            <li><a href="toc/landing-page/guides.html">Guides</a></li>
+            <li><a href="toc/landing-page/components.html">Components</a></li>
+            <li><a href="toc/landing-page/extension-catalog.html">Extension Catalog</a></li>
+            <li><a href="toc/landing-page/support.html">Support</a></li>
+            <li><a href="toc/landing-page/releases.html">Releases</a></li>
           </ul>
         </li>
         <li class="menu-has-children">
diff --git a/core/applib/src/main/doc/modules/applib-cm/pages/classes/AppManifest-bootstrapping.adoc b/core/applib/src/main/doc/modules/applib-cm/pages/classes/AppManifest-bootstrapping.adoc
index 4867aa4..ff6a145 100644
--- a/core/applib/src/main/doc/modules/applib-cm/pages/classes/AppManifest-bootstrapping.adoc
+++ b/core/applib/src/main/doc/modules/applib-cm/pages/classes/AppManifest-bootstrapping.adoc
@@ -255,7 +255,7 @@ In other words these describe how the application chooses to configure the frame
 +
 The classic example here is the JDBC URL.
 
-For example, the xref:starters:simpleapp:about.adoc[SimpleApp archetype]'s `AppManifest` is defined as:
+For example, the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]'s `AppManifest` is defined as:
 
 [source,java]
 ----
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
index 26640d2..8072669 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
@@ -24,8 +24,9 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
-// tag::refguide[]
 public interface AcceptHeaderService {
-    List<MediaType> getAcceptableMediaTypes();  // <1>
+
+    @Programmatic
+    List<MediaType> getAcceptableMediaTypes();
+
 }
-// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
index 477fa03..c1e116a 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
@@ -37,7 +37,6 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
  * {@link org.apache.isis.applib.annotation.DomainService}.  This means that it is automatically registered and
  * available for use; no further configuration is required.
  */
-// tag::refguide[]
 @Service
 @Named("isisApplib.CommandContext")
 @RequestScoped
@@ -57,4 +56,3 @@ public class CommandContext {
     }
 
 }
-// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/spi/CommandService.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/spi/CommandService.java
index 080e91e..3fc3f80 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/spi/CommandService.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/spi/CommandService.java
@@ -26,8 +26,12 @@ import org.apache.isis.applib.services.command.Command;
 public interface CommandService {
 
     /**
-     * Simply instantiate the appropriate instance of the {@link Command}.  Its members will be populated automatically
-     * by the framework (the {@link Command}'s {@link Command#getTimestamp()}, {@link Command#getUser()} and {@link Command#getUniqueId()}).
+     * Simply instantiate the appropriate instance of the {@link Command}.
+     *
+     * <p>
+     * Its members will be populated automatically by the framework (the {@link Command}'s
+     * {@link Command#getTimestamp()}, {@link Command#getUser()} and {@link Command#getUniqueId()}).
+     * </p>
      */
     Command create();
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/iactn/InteractionContext.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/iactn/InteractionContext.java
index 99e9444..52687c2 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/iactn/InteractionContext.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/iactn/InteractionContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.iactn;
 
+import lombok.Getter;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Named;
 
@@ -44,15 +46,11 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 @RequestScoped
 public class InteractionContext {
 
-    private Interaction interaction;
-
     /**
-     * Returns the currently active {@link Interaction} for this thread.
-     * @return
+     * The currently active {@link Interaction} for this thread.
      */
-    public Interaction getInteraction() {
-        return interaction;
-    }
+    @Getter                                 // <1>
+    private Interaction interaction;
 
     /**
      * <b>NOT API</b>: intended to be called only by the framework.
@@ -60,5 +58,4 @@ public class InteractionContext {
     public void setInteraction(final Interaction interaction) {
         this.interaction = interaction;
     }
-
 }
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
index b8874c9..a6964c5 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
@@ -19,11 +19,13 @@ The API defined by the service is:
 
 [source,java]
 ----
-include::example$services/acceptheader/AcceptHeaderService.java[tags=refguide]
+public interface AcceptHeaderService {
+    List<MediaType> getAcceptableMediaTypes();  // <1>
+}
 ----
 <1> returns the list of media types found in the HTTP Accept header.
 
-The default implementation is provided by `o.a.i.v.ro.rendering.service.acceptheader.AcceptHeaderServiceForRest`, and is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`].
+The default implementation is provided by `o.a.i.v.ro.rendering.service.acceptheader.AcceptHeaderServipceForRest`, and is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`].
 
 [NOTE]
 ====
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/testing/FixtureScriptsSpecificationProvider.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/testing/FixtureScriptsSpecificationProvider.adoc
index 0aca1f0..cdf5b9e 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/testing/FixtureScriptsSpecificationProvider.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/testing/FixtureScriptsSpecificationProvider.adoc
@@ -51,7 +51,7 @@ The class is immutable but it has a builder (obtained using `FixturescriptsSpeci
 
 == Implementation
 
-The xref:starters:simpleapp:about.adoc[SimpleApp archetype] has a simple implementation of this service:
+The link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] has a simple implementation of this service:
 
 [source,java]
 ----
diff --git a/core/config/src/main/doc/modules/config/pages/specifying-components.adoc b/core/config/src/main/doc/modules/config/pages/specifying-components.adoc
index 0fbd4e0..11dc0b7 100644
--- a/core/config/src/main/doc/modules/config/pages/specifying-components.adoc
+++ b/core/config/src/main/doc/modules/config/pages/specifying-components.adoc
@@ -29,7 +29,7 @@ To specify the `AppManifest` as a configuration property, use:
 |`o.a.i.applib.AppManifest` +
 
 By convention this implementation resides in an `myapp-app` Maven module (as opposed to `myapp-dom` or `myapp-fixture`).
-See the xref:starters:simpleapp:about.adoc[SimpleApp archetype] for details.
+See the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] for details.
 
 |===
 
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/nav.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/nav.adoc
index a0b16ee..7986c6c 100644
--- a/core/persistence/jdo/src/main/doc/modules/ROOT/nav.adoc
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/nav.adoc
@@ -1,4 +1 @@
-* xref:configuring.adoc[Configuring]
-* xref:jdo-mappings.adoc[JDO Mappings]
-* xref:db-schemas.adoc[DB Schemas]
-* xref:hints-and-tips.adoc[Hints-n-Tips]
+include::pjdo:ROOT:partial$component-nav.adoc[]
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/disabling-persistence-by-reachability.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/disabling-persistence-by-reachability.adoc
index 52892bf..e5228e5 100644
--- a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/disabling-persistence-by-reachability.adoc
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/disabling-persistence-by-reachability.adoc
@@ -27,7 +27,7 @@ We therefore recommend that you disable persistence-by-reachability by adding th
 isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
 ----
 
-This change has been made to both the xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[SimpleApp] archetypes.
+This change has been made to both the link:https://github.com/apache/isis-app-helloworld[HelloWorld] and link:https://github.com/apache/isis-app-simpleapp[SimpleApp] archetypes.
 
 If you do disable this feature, then you will (of course) need to ensure that you explicitly persist all entities using the `RepositoryService#persist(.)` or `RepositoryService#persistAndFlush(.)` methods.
 
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/persistence-xml.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/persistence-xml.adoc
index c345764..ca3bd04 100644
--- a/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/persistence-xml.adoc
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/pages/configuring/persistence-xml.adoc
@@ -9,7 +9,7 @@ DataNucleus will for itself also and read the `META-INF/persistence.xml`.
 In theory it can hold mappings and even connection strings.
 However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the "persistence unit".
 
-Here's the one provided by the xref:starters:simpleapp:about.adoc[SimpleApp archetype]:
+Here's the one provided by the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]:
 
 [source,xml]
 ----
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/partials/component-nav.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/partials/component-nav.adoc
new file mode 100644
index 0000000..992cf9c
--- /dev/null
+++ b/core/persistence/jdo/src/main/doc/modules/ROOT/partials/component-nav.adoc
@@ -0,0 +1,2 @@
+include::pjdo:ROOT:partial$module-nav.adoc[]
+include::pjdo:flywayjdo:partial$module-nav.adoc[]
diff --git a/core/persistence/jdo/src/main/doc/modules/ROOT/nav.adoc b/core/persistence/jdo/src/main/doc/modules/ROOT/partials/module-nav.adoc
similarity index 100%
copy from core/persistence/jdo/src/main/doc/modules/ROOT/nav.adoc
copy to core/persistence/jdo/src/main/doc/modules/ROOT/partials/module-nav.adoc
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
index 06a3fd3..140e752 100644
--- a/core/security/shiro/src/main/doc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about/configuring-isis-to-use-shiro.adoc
@@ -10,7 +10,7 @@ The Shiro security mechanism is an integration wih Apache Shiro that implements
 
 [TIP]
 ====
-Both the xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[SimpleApp] archetypes are pre-configured to use Apache Shiro, so much of what follows may well have been set up already.
+Both the link:https://github.com/apache/isis-app-helloworld[HelloWorld] and link:https://github.com/apache/isis-app-simpleapp[SimpleApp] archetypes are pre-configured to use Apache Shiro, so much of what follows may well have been set up already.
 ====
 
 
@@ -18,7 +18,7 @@ Both the xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpl
 
 To tell Apache Isis to use Shiro when using an xref:refguide:applib-cm:rgcms.adoc#__rgcms_classes_AppManifest-bootstrapping_bootstrapping_AppManifestAbstract[`AppManifestAbstract.BUILDER`], simply specify the "authMechanism" as "shiro".
 
-For example, the xref:starters:helloworld:about.adoc[HelloWorld archetype] bootstraps using:
+For example, the link:https://github.com/apache/isis-app-helloworld[HelloWorld archetype] bootstraps using:
 
 [source,java]
 ----
diff --git a/core/security/shiro/src/main/doc/modules/shiro/pages/about/ini-realm.adoc b/core/security/shiro/src/main/doc/modules/shiro/pages/about/ini-realm.adoc
index 303322c..90aecec 100644
--- a/core/security/shiro/src/main/doc/modules/shiro/pages/about/ini-realm.adoc
+++ b/core/security/shiro/src/main/doc/modules/shiro/pages/about/ini-realm.adoc
@@ -11,7 +11,7 @@ Probably the simplest realm to use is Shiro's built-in `IniRealm`, which reads f
 
 This is suitable for prototyping, but isn't intended for production use, if only because user/password credentials are stored in plain text.
 Nevertheless, it's a good starting point.
-The app generated by both the xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[SimpleApp]  archetypes are configured to use this realm.
+The app generated by both the link:https://github.com/apache/isis-app-helloworld[HelloWorld] and link:https://github.com/apache/isis-app-simpleapp[SimpleApp]  archetypes are configured to use this realm.
 
 The diagram below shows the Isis and components involved:
 
diff --git a/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/bootstrapping.adoc b/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/bootstrapping.adoc
index 487f426..b77e4e2 100644
--- a/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/bootstrapping.adoc
+++ b/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/bootstrapping.adoc
@@ -10,7 +10,7 @@ Because (depending on the size of your app) it takes a little time to bootstrap
 
 The recommended way to bootstrapping of integration tests is done using a xref:refguide:applib-cm:classes/AppManifest2-bootstrapping.adoc[`Module`] implementation, along with the `IntegrationTestAbstract3` superclass.
 
-For example, the xref:starters:simpleapp:about.adoc[SimpleApp archetype]'s integration tests all inherit from this class:
+For example, the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]'s integration tests all inherit from this class:
 
 [source,java]
 ----
diff --git a/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/maven-configuration.adoc b/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/maven-configuration.adoc
index aed5ec7..d69b097 100644
--- a/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/maven-configuration.adoc
+++ b/core/testsupport/integtestsupport/src/main/doc/modules/integ-test-support/pages/integ-test-support/maven-configuration.adoc
@@ -4,7 +4,7 @@
 include::_attributes.adoc[]
 
 
-Apache Isis' integration test support is automatically configured if you use the xref:starters:simpleapp:about.adoc[SimpleApp starter app].
+Apache Isis' integration test support is automatically configured if you use the link:https://github.com/apache/isis-app-simpleapp[SimpleApp starter app].
 To set it up manually, update the `pom.xml` of your domain object model module:
 
 [source,xml]
@@ -21,7 +21,7 @@ To set it up manually, update the `pom.xml` of your domain object model module:
 
 [NOTE]
 ====
-This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the xref:starters:simpleapp:about.adoc[SimpleApp starter app].
+This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the link:https://github.com/apache/isis-app-simpleapp[SimpleApp starter app].
 ====
 
 We also recommend that you configure the `maven-surefire-plugin` to pick up the following class patterns:
@@ -52,5 +52,5 @@ We also recommend that you configure the `maven-surefire-plugin` to pick up the
 
 [NOTE]
 ====
-This can also be done using mavenmixins; see the xref:starters:simpleapp:about.adoc[SimpleApp starter app].
+This can also be done using mavenmixins; see the link:https://github.com/apache/isis-app-simpleapp[SimpleApp starter app].
 ====
diff --git a/core/testsupport/unittestsupport/src/main/doc/modules/unit-test-support/pages/unit-test-support/maven-configuration.adoc b/core/testsupport/unittestsupport/src/main/doc/modules/unit-test-support/pages/unit-test-support/maven-configuration.adoc
index 4271edd..22b25a7 100644
--- a/core/testsupport/unittestsupport/src/main/doc/modules/unit-test-support/pages/unit-test-support/maven-configuration.adoc
+++ b/core/testsupport/unittestsupport/src/main/doc/modules/unit-test-support/pages/unit-test-support/maven-configuration.adoc
@@ -4,7 +4,7 @@
 include::_attributes.adoc[]
 
 
-Apache Isis' unit test support is automatically configured if you use the xref:starters:helloworld:about.adoc[HelloWorld] or the xref:starters:simpleapp:about.adoc[SimpleApp] archetypes.
+Apache Isis' unit test support is automatically configured if you use the link:https://github.com/apache/isis-app-helloworld[HelloWorld] or the link:https://github.com/apache/isis-app-simpleapp[SimpleApp] archetypes.
 To set it up manually, update the `pom.xml` of your domain object model module:
 
 [source,xml]
@@ -20,7 +20,7 @@ To set it up manually, update the `pom.xml` of your domain object model module:
 
 [NOTE]
 ====
-This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the xref:starters:simpleapp:about.adoc[SimpleApp starter app].
+This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the link:https://github.com/apache/isis-app-simpleapp[SimpleApp starter app].
 ====
 
 
@@ -52,5 +52,5 @@ We also recommend that you configure the `maven-surefire-plugin` to pick up the
 
 [NOTE]
 ====
-This can also be done using mavenmixins; see the xref:starters:simpleapp:about.adoc[SimpleApp starter app].
+This can also be done using mavenmixins; see the link:https://github.com/apache/isis-app-simpleapp[SimpleApp starter app].
 ====
diff --git a/core/viewers/restfulobjects/src/main/doc/modules/ROOT/pages/layout-resources.adoc b/core/viewers/restfulobjects/src/main/doc/modules/ROOT/pages/layout-resources.adoc
index 01b51f6..22c3398 100644
--- a/core/viewers/restfulobjects/src/main/doc/modules/ROOT/pages/layout-resources.adoc
+++ b/core/viewers/restfulobjects/src/main/doc/modules/ROOT/pages/layout-resources.adoc
@@ -13,7 +13,7 @@ This chapter provides details of these resources, the link ``Rel``s to access th
 
 The xref:refguide:applib-svc:presentation-layer-spi/MenuBarsService.adoc[`MenuBarsService`] provides the `menu.layout.xml` XML document which defines how to group the various domain service actions into menubars, menus and menu sections.
 
-For example, the xref:starters:helloworld:about.adoc[Hello World starter app] has the following layout:
+For example, the link:https://github.com/apache/isis-app-helloworld[Hello World starter app] has the following layout:
 
 [source,xml]
 ----
@@ -135,7 +135,7 @@ Note that because of dynamic icons (the xref:refguide:applib-cm:methods.adoc#ico
 The xref:refguide:applib-svc:presentation-layer-spi/GridService.adoc[`GridService`] provides an XML document which defines the layout of any of domain object.
 Typically this is the contents of the `Xxx.layout.xml` file (where `Xxx` is the domain type).
 
-For example, in the xref:starters:helloworld:about.adoc[Hello World starter app] the `HelloWorld` domain object has a layout defined by `HelloWorld.layout.xml`.
+For example, in the link:https://github.com/apache/isis-app-helloworld[Hello World starter app] the `HelloWorld` domain object has a layout defined by `HelloWorld.layout.xml`.
 
 The representation returned by the domain object resource (section 14.4 of the RO spec v1.0) has been extended to provide a link to this resource:
 
diff --git a/core/viewers/wicket/src/main/doc/modules/ROOT/pages/layout/file-based.adoc b/core/viewers/wicket/src/main/doc/modules/ROOT/pages/layout/file-based.adoc
index 301f4ad..ec641ca 100644
--- a/core/viewers/wicket/src/main/doc/modules/ROOT/pages/layout/file-based.adoc
+++ b/core/viewers/wicket/src/main/doc/modules/ROOT/pages/layout/file-based.adoc
@@ -459,7 +459,7 @@ Ensure the following is defined in the dom project's `pom.xml`:
 </resources>
 ----
 
-If using an Apache Isis xref:starters:helloworld:about.adoc[HelloWorld] xref:starters:simpleapp:about.adoc[SimpleApp] archetypes, then the POM is already correctly configured.
+If using an Apache Isis link:https://github.com/apache/isis-app-helloworld[HelloWorld] link:https://github.com/apache/isis-app-simpleapp[SimpleApp] archetypes, then the POM is already correctly configured.
 
 
 
diff --git a/extensions/core/spring/src/main/doc/modules/spring/partials/module-nav.adoc b/extensions/core/spring/src/main/doc/modules/spring/partials/module-nav.adoc
index 35e1cca..c74df47 100644
--- a/extensions/core/spring/src/main/doc/modules/spring/partials/module-nav.adoc
+++ b/extensions/core/spring/src/main/doc/modules/spring/partials/module-nav.adoc
@@ -1,3 +1,3 @@
-* xref:extensions:spring:about.adoc[Spring (extension)]
+* xref:extensions:spring:about.adoc[Spring]
 
 
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/antora.yml b/extensions/lib/base/impl/src/main/doc/antora.yml
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/antora.yml
copy to extensions/lib/base/impl/src/main/doc/antora.yml
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc b/extensions/lib/base/impl/src/main/doc/modules/base/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc
copy to extensions/lib/base/impl/src/main/doc/modules/base/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc b/extensions/lib/base/impl/src/main/doc/modules/base/nav.adoc
similarity index 100%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc
copy to extensions/lib/base/impl/src/main/doc/modules/base/nav.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/lib/base/impl/src/main/doc/modules/base/pages/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/lib/base/impl/src/main/doc/modules/base/pages/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc b/extensions/lib/base/impl/src/main/doc/modules/base/pages/about.adoc
similarity index 98%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
copy to extensions/lib/base/impl/src/main/doc/modules/base/pages/about.adoc
index 883c317..9eb066b 100644
--- a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
+++ b/extensions/lib/base/impl/src/main/doc/modules/base/pages/about.adoc
@@ -1,4 +1,4 @@
-= H2 Console
+= Base Library
 :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[]
 
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages/_attributes.adoc b/extensions/lib/base/impl/src/main/doc/modules/base/partials/_attributes.adoc
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages/_attributes.adoc
rename to extensions/lib/base/impl/src/main/doc/modules/base/partials/_attributes.adoc
diff --git a/extensions/lib/base/impl/src/main/doc/modules/base/partials/module-nav.adoc b/extensions/lib/base/impl/src/main/doc/modules/base/partials/module-nav.adoc
new file mode 100644
index 0000000..d97c5d9
--- /dev/null
+++ b/extensions/lib/base/impl/src/main/doc/modules/base/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:extensions:docx:about.adoc[Base Library]
+
+
diff --git a/extensions/persistence/h2console/pom.xml b/extensions/lib/docx/impl/pom.xml
similarity index 70%
copy from extensions/persistence/h2console/pom.xml
copy to extensions/lib/docx/impl/pom.xml
index 13e3cff..e28c5ad 100644
--- a/extensions/persistence/h2console/pom.xml
+++ b/extensions/lib/docx/impl/pom.xml
@@ -21,27 +21,17 @@
 		<relativePath>../../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>isis-extensions-h2console-dom</artifactId>
-	<name>Apache Isis Ext - H2 Console</name>
-	<description>Menu and configuration to open up H2 Console</description>
+	<artifactId>isis-extensions-flywayjdo-dom</artifactId>
+	<name>Apache Isis Ext - FlywayJDO</name>
+	<description>Integrates FlywayDB when using JDO Object Store</description>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.extensions.h2console.dom</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/extensions/h2console/dom</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.extensions.flywayjdo.dom</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/extensions/flywayjdo/dom</git-plugin.propertiesDir>
 	</properties>
 
 	<dependencies>
 
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-webapp</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.h2database</groupId>
-			<artifactId>h2</artifactId>
-		</dependency>
-
 	</dependencies>
 
 </project>
diff --git a/extensions/persistence/h2console/src/main/doc/antora.yml b/extensions/lib/docx/impl/src/main/doc/antora.yml
similarity index 100%
rename from extensions/persistence/h2console/src/main/doc/antora.yml
rename to extensions/lib/docx/impl/src/main/doc/antora.yml
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/_attributes.adoc b/extensions/lib/docx/impl/src/main/doc/modules/docx/_attributes.adoc
similarity index 100%
rename from extensions/persistence/h2console/src/main/doc/modules/h2console/_attributes.adoc
rename to extensions/lib/docx/impl/src/main/doc/modules/docx/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc b/extensions/lib/docx/impl/src/main/doc/modules/docx/nav.adoc
similarity index 100%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc
copy to extensions/lib/docx/impl/src/main/doc/modules/docx/nav.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/partials/_attributes.adoc b/extensions/lib/docx/impl/src/main/doc/modules/docx/pages/_attributes.adoc
similarity index 100%
rename from extensions/persistence/h2console/src/main/doc/modules/h2console/partials/_attributes.adoc
rename to extensions/lib/docx/impl/src/main/doc/modules/docx/pages/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc b/extensions/lib/docx/impl/src/main/doc/modules/docx/pages/about.adoc
similarity index 98%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
copy to extensions/lib/docx/impl/src/main/doc/modules/docx/pages/about.adoc
index 883c317..f09dc2a 100644
--- a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
+++ b/extensions/lib/docx/impl/src/main/doc/modules/docx/pages/about.adoc
@@ -1,4 +1,4 @@
-= H2 Console
+= Docx Library
 :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[]
 
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/_attributes.adoc b/extensions/lib/docx/impl/src/main/doc/modules/docx/partials/_attributes.adoc
similarity index 100%
rename from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/_attributes.adoc
rename to extensions/lib/docx/impl/src/main/doc/modules/docx/partials/_attributes.adoc
diff --git a/extensions/lib/docx/impl/src/main/doc/modules/docx/partials/module-nav.adoc b/extensions/lib/docx/impl/src/main/doc/modules/docx/partials/module-nav.adoc
new file mode 100644
index 0000000..e10d7c0
--- /dev/null
+++ b/extensions/lib/docx/impl/src/main/doc/modules/docx/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:extensions:docx:about.adoc[Docx Library]
+
+
diff --git a/extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java b/extensions/lib/docx/impl/src/main/java/org/apache/isis/extensions/docx/dom/IsisModuleExtDocx.java
similarity index 89%
copy from extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java
copy to extensions/lib/docx/impl/src/main/java/org/apache/isis/extensions/docx/dom/IsisModuleExtDocx.java
index 352e3e9..a654ca4 100644
--- a/extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java
+++ b/extensions/lib/docx/impl/src/main/java/org/apache/isis/extensions/docx/dom/IsisModuleExtDocx.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.hsqldbmgr.dom;
+package org.apache.isis.extensions.docx.dom;
 
 import org.apache.isis.webapp.IsisModuleWebapp;
 import org.springframework.context.annotation.ComponentScan;
@@ -24,10 +24,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
 @Configuration
-@Import({
-        IsisModuleWebapp.class
-})
 @ComponentScan
-public class IsisModuleExtHsqldbMgr {
+public class IsisModuleExtDocx {
 
 }
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/antora.yml b/extensions/lib/excel/impl/src/main/doc/antora.yml
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/antora.yml
copy to extensions/lib/excel/impl/src/main/doc/antora.yml
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc b/extensions/lib/excel/impl/src/main/doc/modules/excel/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc
copy to extensions/lib/excel/impl/src/main/doc/modules/excel/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc b/extensions/lib/excel/impl/src/main/doc/modules/excel/nav.adoc
similarity index 100%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc
copy to extensions/lib/excel/impl/src/main/doc/modules/excel/nav.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/lib/excel/impl/src/main/doc/modules/excel/pages/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/lib/excel/impl/src/main/doc/modules/excel/pages/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc b/extensions/lib/excel/impl/src/main/doc/modules/excel/pages/about.adoc
similarity index 98%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
copy to extensions/lib/excel/impl/src/main/doc/modules/excel/pages/about.adoc
index 883c317..93d45fb 100644
--- a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
+++ b/extensions/lib/excel/impl/src/main/doc/modules/excel/pages/about.adoc
@@ -1,4 +1,4 @@
-= H2 Console
+= Excel Library
 :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[]
 
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/lib/excel/impl/src/main/doc/modules/excel/partials/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/lib/excel/impl/src/main/doc/modules/excel/partials/_attributes.adoc
diff --git a/extensions/lib/excel/impl/src/main/doc/modules/excel/partials/module-nav.adoc b/extensions/lib/excel/impl/src/main/doc/modules/excel/partials/module-nav.adoc
new file mode 100644
index 0000000..2958aaa
--- /dev/null
+++ b/extensions/lib/excel/impl/src/main/doc/modules/excel/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:extensions:excel:about.adoc[Excel Library]
+
+
diff --git a/extensions/persistence/h2console/pom.xml b/extensions/persistence/flywayjdo/impl/pom.xml
similarity index 68%
copy from extensions/persistence/h2console/pom.xml
copy to extensions/persistence/flywayjdo/impl/pom.xml
index 13e3cff..10e4870 100644
--- a/extensions/persistence/h2console/pom.xml
+++ b/extensions/persistence/flywayjdo/impl/pom.xml
@@ -18,30 +18,20 @@
 		<groupId>org.apache.isis.extensions</groupId>
 		<artifactId>isis-extensions</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../../pom.xml</relativePath>
+		<relativePath>../../../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>isis-extensions-h2console-dom</artifactId>
-	<name>Apache Isis Ext - H2 Console</name>
-	<description>Menu and configuration to open up H2 Console</description>
+	<artifactId>isis-extensions-flywayjdo-dom</artifactId>
+	<name>Apache Isis Ext - FlywayJDO</name>
+	<description>Integrates FlywayDB when using JDO Object Store</description>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.extensions.h2console.dom</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/extensions/h2console/dom</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.extensions.flywayjdo.dom</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/extensions/flywayjdo/dom</git-plugin.propertiesDir>
 	</properties>
 
 	<dependencies>
 
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-webapp</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.h2database</groupId>
-			<artifactId>h2</artifactId>
-		</dependency>
-
 	</dependencies>
 
 </project>
diff --git a/extensions/persistence/flywayjdo/impl/src/main/doc/antora.yml b/extensions/persistence/flywayjdo/impl/src/main/doc/antora.yml
new file mode 100644
index 0000000..e805b25
--- /dev/null
+++ b/extensions/persistence/flywayjdo/impl/src/main/doc/antora.yml
@@ -0,0 +1,2 @@
+name: pjdo
+version: master
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc
copy to extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/nav.adoc
similarity index 100%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc
copy to extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/nav.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/pages/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/pages/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/pages/about.adoc
similarity index 97%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
copy to extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/pages/about.adoc
index 883c317..33f8538 100644
--- a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
+++ b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/pages/about.adoc
@@ -1,4 +1,4 @@
-= H2 Console
+= Flyway for 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[]
 
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/_attributes.adoc
diff --git a/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/module-nav.adoc b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/module-nav.adoc
new file mode 100644
index 0000000..e255168
--- /dev/null
+++ b/extensions/persistence/flywayjdo/impl/src/main/doc/modules/flywayjdo/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:pjdo:flywayjdo:about.adoc[Flyway for JDO]
+
+
diff --git a/extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java b/extensions/persistence/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
similarity index 89%
copy from extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java
copy to extensions/persistence/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
index 352e3e9..09412b7 100644
--- a/extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java
+++ b/extensions/persistence/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.hsqldbmgr.dom;
+package org.apache.isis.extensions.flywayjdo.dom;
 
 import org.apache.isis.webapp.IsisModuleWebapp;
 import org.springframework.context.annotation.ComponentScan;
@@ -24,10 +24,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
 @Configuration
-@Import({
-        IsisModuleWebapp.class
-})
 @ComponentScan
-public class IsisModuleExtHsqldbMgr {
+public class IsisModuleExtFlywayJdo {
 
 }
diff --git a/extensions/persistence/h2console/pom.xml b/extensions/persistence/h2console/impl/pom.xml
similarity index 97%
rename from extensions/persistence/h2console/pom.xml
rename to extensions/persistence/h2console/impl/pom.xml
index 13e3cff..40dc77e 100644
--- a/extensions/persistence/h2console/pom.xml
+++ b/extensions/persistence/h2console/impl/pom.xml
@@ -18,7 +18,7 @@
 		<groupId>org.apache.isis.extensions</groupId>
 		<artifactId>isis-extensions</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../../pom.xml</relativePath>
+		<relativePath>../../../pom.xml</relativePath>
 	</parent>
 
 	<artifactId>isis-extensions-h2console-dom</artifactId>
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/antora.yml b/extensions/persistence/h2console/impl/src/main/doc/antora.yml
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/antora.yml
copy to extensions/persistence/h2console/impl/src/main/doc/antora.yml
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc b/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc
copy to extensions/persistence/h2console/impl/src/main/doc/modules/h2console/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc b/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/nav.adoc
similarity index 100%
rename from extensions/persistence/h2console/src/main/doc/modules/h2console/nav.adoc
rename to extensions/persistence/h2console/impl/src/main/doc/modules/h2console/nav.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/pages/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/persistence/h2console/impl/src/main/doc/modules/h2console/pages/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc b/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/pages/about.adoc
similarity index 100%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
copy to extensions/persistence/h2console/impl/src/main/doc/modules/h2console/pages/about.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/partials/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/persistence/h2console/impl/src/main/doc/modules/h2console/partials/_attributes.adoc
diff --git a/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/partials/module-nav.adoc b/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/partials/module-nav.adoc
new file mode 100644
index 0000000..02826d6
--- /dev/null
+++ b/extensions/persistence/h2console/impl/src/main/doc/modules/h2console/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:extensions:h2console:about.adoc[H2 Console]
+
+
diff --git a/extensions/persistence/h2console/src/main/java/org/apache/isis/extensions/h2console/dom/IsisModuleExtH2Console.java b/extensions/persistence/h2console/impl/src/main/java/org/apache/isis/extensions/h2console/dom/IsisModuleExtH2Console.java
similarity index 100%
rename from extensions/persistence/h2console/src/main/java/org/apache/isis/extensions/h2console/dom/IsisModuleExtH2Console.java
rename to extensions/persistence/h2console/impl/src/main/java/org/apache/isis/extensions/h2console/dom/IsisModuleExtH2Console.java
diff --git a/extensions/persistence/h2console/src/main/java/org/apache/isis/extensions/h2console/dom/services/H2ManagerMenu.java b/extensions/persistence/h2console/impl/src/main/java/org/apache/isis/extensions/h2console/dom/services/H2ManagerMenu.java
similarity index 100%
rename from extensions/persistence/h2console/src/main/java/org/apache/isis/extensions/h2console/dom/services/H2ManagerMenu.java
rename to extensions/persistence/h2console/impl/src/main/java/org/apache/isis/extensions/h2console/dom/services/H2ManagerMenu.java
diff --git a/extensions/persistence/h2console/src/main/java/org/apache/isis/extensions/h2console/dom/webmodule/WebModuleH2Console.java b/extensions/persistence/h2console/impl/src/main/java/org/apache/isis/extensions/h2console/dom/webmodule/WebModuleH2Console.java
similarity index 100%
rename from extensions/persistence/h2console/src/main/java/org/apache/isis/extensions/h2console/dom/webmodule/WebModuleH2Console.java
rename to extensions/persistence/h2console/impl/src/main/java/org/apache/isis/extensions/h2console/dom/webmodule/WebModuleH2Console.java
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/partials/module-nav.adoc b/extensions/persistence/h2console/src/main/doc/modules/h2console/partials/module-nav.adoc
deleted file mode 100644
index 35e1cca..0000000
--- a/extensions/persistence/h2console/src/main/doc/modules/h2console/partials/module-nav.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-* xref:extensions:spring:about.adoc[Spring (extension)]
-
-
diff --git a/extensions/persistence/hsqldbmgr/pom.xml b/extensions/persistence/hsqldbmgr/impl/pom.xml
similarity index 97%
rename from extensions/persistence/hsqldbmgr/pom.xml
rename to extensions/persistence/hsqldbmgr/impl/pom.xml
index 3ec20eb..da9e957 100644
--- a/extensions/persistence/hsqldbmgr/pom.xml
+++ b/extensions/persistence/hsqldbmgr/impl/pom.xml
@@ -18,7 +18,7 @@
 		<groupId>org.apache.isis.extensions</groupId>
 		<artifactId>isis-extensions</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../../pom.xml</relativePath>
+		<relativePath>../../../pom.xml</relativePath>
 	</parent>
 
 	<artifactId>isis-extensions-hsqldbmgr-dom</artifactId>
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/antora.yml b/extensions/persistence/hsqldbmgr/impl/src/main/doc/antora.yml
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/doc/antora.yml
rename to extensions/persistence/hsqldbmgr/impl/src/main/doc/antora.yml
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc b/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc
copy to extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/_attributes.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/nav.adoc b/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/nav.adoc
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/nav.adoc
rename to extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/nav.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/pages/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/pages/_attributes.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages/about.adoc b/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/pages/about.adoc
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/pages/about.adoc
rename to extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/pages/about.adoc
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
diff --git a/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc b/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc
new file mode 100644
index 0000000..847ab33
--- /dev/null
+++ b/extensions/persistence/hsqldbmgr/impl/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:extensions:hsqldbmgr:about.adoc[HSQLDB Manager]
+
+
diff --git a/extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java b/extensions/persistence/hsqldbmgr/impl/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java
rename to extensions/persistence/hsqldbmgr/impl/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.java
diff --git a/extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.java b/extensions/persistence/hsqldbmgr/impl/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.java
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.java
rename to extensions/persistence/hsqldbmgr/impl/src/main/java/org/apache/isis/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.java
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc b/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc
deleted file mode 100644
index 35e1cca..0000000
--- a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/module-nav.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-* xref:extensions:spring:about.adoc[Spring (extension)]
-
-
diff --git a/extensions/pom.xml b/extensions/pom.xml
index b9fe027..b8b1da7 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -201,30 +201,34 @@
 
 	<modules>
 		<module>core/spring</module>
-		<module>persistence/h2console</module>
-		<module>persistence/hsqldbmgr</module>
+		<module>lib/base/impl</module>
+<!--
+		<module>lib/excel/fixture</module>
+		<module>lib/excel/integtests</module>
+-->
+		<module>lib/excel/impl</module>
+
+		<module>persistence/h2console/impl</module>
+		<module>persistence/hsqldbmgr/impl</module>
+
 		<module>security/secman</module>
 		<module>security/shiro-realm-ldap</module>
+
+		<module>testing/fakedata/impl</module>
+		<module>testing/fakedata/fixture</module>
+<!--
+		<module>testing/fakedata/integtests</module>
+-->
 		<module>testing/fixtures</module>
 		<module>testing/specsupport</module>
+		<module>testing/unittestsupport/impl</module>
+
 		<module>vro/restclient</module>
 		<module>vw/asciidoc</module>
 		<module>vw/exceldownload</module>
 		<module>vw/markdown</module>
 		<module>vw/sse</module>
 
-		<module>lib/base/impl</module>
-<!--
-		<module>lib/excel/fixture</module>
-		<module>lib/excel/integtests</module>
--->
-		<module>lib/excel/impl</module>
-		<module>lib/fakedata/impl</module>
-		<module>lib/fakedata/fixture</module>
-<!--
-		<module>lib/fakedata/integtests</module>
--->
-		<module>lib/unittestsupport/impl</module>
 	</modules>
 
 	<profiles>
diff --git a/extensions/lib/fakedata/fixture/.gitignore b/extensions/testing/fakedata/fixture/.gitignore
similarity index 100%
rename from extensions/lib/fakedata/fixture/.gitignore
rename to extensions/testing/fakedata/fixture/.gitignore
diff --git a/extensions/lib/fakedata/fixture/logging-dn-enhance.properties b/extensions/testing/fakedata/fixture/logging-dn-enhance.properties
similarity index 100%
rename from extensions/lib/fakedata/fixture/logging-dn-enhance.properties
rename to extensions/testing/fakedata/fixture/logging-dn-enhance.properties
diff --git a/extensions/lib/fakedata/fixture/pom.xml b/extensions/testing/fakedata/fixture/pom.xml
similarity index 100%
rename from extensions/lib/fakedata/fixture/pom.xml
rename to extensions/testing/fakedata/fixture/pom.xml
diff --git a/extensions/lib/fakedata/fixture/src/main/java/META-INF/persistence.xml b/extensions/testing/fakedata/fixture/src/main/java/META-INF/persistence.xml
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/META-INF/persistence.xml
rename to extensions/testing/fakedata/fixture/src/main/java/META-INF/persistence.xml
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/IsisModuleExtFakeDataFixtures.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/IsisModuleExtFakeDataFixtures.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/IsisModuleExtFakeDataFixtures.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/IsisModuleExtFakeDataFixtures.java
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/EnumOf3.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/EnumOf3.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/EnumOf3.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/EnumOf3.java
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.java
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.png b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.png
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.png
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAll.png
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAllMenu.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAllMenu.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAllMenu.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/dom/FakeDataDemoObjectWithAllMenu.java
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_create3.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_create3.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_create3.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_create3.java
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_tearDown.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_tearDown.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_tearDown.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/FakeDataDemoObjectWithAll_tearDown.java
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_create_withFakeData.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_create_withFakeData.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_create_withFakeData.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_create_withFakeData.java
diff --git a/extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_update_withFakeData.java b/extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_update_withFakeData.java
similarity index 100%
rename from extensions/lib/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_update_withFakeData.java
rename to extensions/testing/fakedata/fixture/src/main/java/org/isisaddons/module/fakedata/fixture/demoapp/demomodule/fixturescripts/data/FakeDataDemoObjectWithAll_update_withFakeData.java
diff --git a/extensions/lib/fakedata/impl/pom.xml b/extensions/testing/fakedata/impl/pom.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/pom.xml
rename to extensions/testing/fakedata/impl/pom.xml
diff --git a/extensions/testing/fakedata/impl/src/main/doc/antora.yml b/extensions/testing/fakedata/impl/src/main/doc/antora.yml
new file mode 100644
index 0000000..0d34b75
--- /dev/null
+++ b/extensions/testing/fakedata/impl/src/main/doc/antora.yml
@@ -0,0 +1,2 @@
+name: testing
+version: master
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc
copy to extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/_attributes.adoc
diff --git a/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/nav.adoc b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/nav.adoc
new file mode 100644
index 0000000..13d0804
--- /dev/null
+++ b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/nav.adoc
@@ -0,0 +1,2 @@
+include::testing:ROOT:partial$component-nav.adoc[]
+
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/pages/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/pages/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/pages/about.adoc
similarity index 98%
copy from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
copy to extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/pages/about.adoc
index 883c317..9be2d0d 100644
--- a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
+++ b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/pages/about.adoc
@@ -1,4 +1,4 @@
-= H2 Console
+= Fakedata
 :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[]
 
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/partials/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/partials/_attributes.adoc
diff --git a/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/partials/module-nav.adoc b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/partials/module-nav.adoc
new file mode 100644
index 0000000..cf7bdbf
--- /dev/null
+++ b/extensions/testing/fakedata/impl/src/main/doc/modules/fakedata/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:testing:fakedata:about.adoc[Fakedata (extension)]
+
+
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/IsisModuleExtFakeData.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/IsisModuleExtFakeData.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/IsisModuleExtFakeData.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/IsisModuleExtFakeData.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/AbstractRandomValueGenerator.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/AbstractRandomValueGenerator.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/AbstractRandomValueGenerator.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/AbstractRandomValueGenerator.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Addresses.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Addresses.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Addresses.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Addresses.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigDecimals.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigDecimals.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigDecimals.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigDecimals.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigIntegers.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigIntegers.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigIntegers.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/BigIntegers.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Books.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Books.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Books.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Books.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Booleans.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Booleans.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Booleans.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Booleans.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Bytes.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Bytes.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Bytes.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Bytes.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Chars.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Chars.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Chars.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Chars.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Collections.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Collections.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Collections.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Collections.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Comms.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Comms.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Comms.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Comms.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/CreditCards.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/CreditCards.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/CreditCards.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/CreditCards.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Doubles.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Doubles.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Doubles.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Doubles.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Enums.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Enums.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Enums.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Enums.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataService.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataService.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataService.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataService.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Floats.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Floats.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Floats.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Floats.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Integers.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Integers.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Integers.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Integers.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisBlobs.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisBlobs.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisBlobs.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisBlobs.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisClobs.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisClobs.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisClobs.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisClobs.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisMoneys.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisMoneys.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisMoneys.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisMoneys.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisPasswords.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisPasswords.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisPasswords.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/IsisPasswords.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8DateTimes.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8DateTimes.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8DateTimes.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8DateTimes.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8LocalDates.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8LocalDates.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8LocalDates.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8LocalDates.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8Periods.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8Periods.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8Periods.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/J8Periods.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlDates.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlDates.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlDates.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlDates.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlTimestamps.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlTimestamps.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlTimestamps.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaSqlTimestamps.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaUtilDates.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaUtilDates.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaUtilDates.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/JavaUtilDates.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Longs.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Longs.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Longs.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Longs.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Lorem.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Lorem.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Lorem.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Lorem.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Names.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Names.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Names.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Names.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Shorts.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Shorts.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Shorts.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Shorts.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Strings.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Strings.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Strings.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Strings.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Urls.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Urls.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Urls.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Urls.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Uuids.java b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Uuids.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Uuids.java
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/Uuids.java
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/Pawson-Naked-Objects-thesis.pdf b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/Pawson-Naked-Objects-thesis.pdf
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/Pawson-Naked-Objects-thesis.pdf
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/Pawson-Naked-Objects-thesis.pdf
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-150x150.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-150x150.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-150x150.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-150x150.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-2048x1536.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-2048x1536.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-2048x1536.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-2048x1536.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-240x180.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-240x180.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-240x180.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-240x180.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-4000x3000.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-4000x3000.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-4000x3000.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-4000x3000.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-640x480.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-640x480.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-640x480.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image01-640x480.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-150x150.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-150x150.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-150x150.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-150x150.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-2048x1536.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-2048x1536.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-2048x1536.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-2048x1536.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-240x180.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-240x180.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-240x180.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-240x180.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-4000x3000.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-4000x3000.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-4000x3000.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-4000x3000.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-640x480.jpg b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-640x480.jpg
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-640x480.jpg
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/image02-640x480.jpg
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/rick-mugridge-paper.pdf b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/rick-mugridge-paper.pdf
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/rick-mugridge-paper.pdf
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/blobs/rick-mugridge-paper.pdf
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/RTF-Spec-1.7.rtf b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/RTF-Spec-1.7.rtf
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/RTF-Spec-1.7.rtf
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/RTF-Spec-1.7.rtf
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/a_and_c.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/a_and_c.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/a_and_c.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/a_and_c.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/all_well.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/all_well.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/all_well.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/all_well.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/as_you.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/as_you.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/as_you.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/as_you.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/com_err.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/com_err.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/com_err.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/com_err.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/config.rtf b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/config.rtf
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/config.rtf
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/config.rtf
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/coriolan.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/coriolan.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/coriolan.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/coriolan.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/cymbelin.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/cymbelin.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/cymbelin.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/cymbelin.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dream.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dream.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dream.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dream.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dsssl.dtd b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dsssl.dtd
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dsssl.dtd
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/dsssl.dtd
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/fot.dtd b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/fot.dtd
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/fot.dtd
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/fot.dtd
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hamlet.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hamlet.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hamlet.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hamlet.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_1.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_1.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_1.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_1.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_2.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_2.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_2.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_iv_2.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_v.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_v.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_v.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_v.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_1.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_1.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_1.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_1.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_2.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_2.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_2.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_2.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_3.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_3.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_3.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_vi_3.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_viii.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_viii.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_viii.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/hen_viii.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/j_caesar.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/j_caesar.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/j_caesar.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/j_caesar.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/john.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/john.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/john.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/john.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lear.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lear.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lear.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lear.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lll.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lll.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lll.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/lll.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_for_m.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_for_m.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_for_m.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_for_m.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_wives.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_wives.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_wives.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/m_wives.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/macbeth.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/macbeth.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/macbeth.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/macbeth.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/merchant.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/merchant.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/merchant.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/merchant.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/much_ado.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/much_ado.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/much_ado.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/much_ado.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/othello.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/othello.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/othello.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/othello.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/pericles.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/pericles.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/pericles.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/pericles.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/play.dtd b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/play.dtd
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/play.dtd
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/play.dtd
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/r_and_j.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/r_and_j.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/r_and_j.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/r_and_j.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_ii.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_ii.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_ii.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_ii.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_iii.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_iii.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_iii.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/rich_iii.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/sample.rtf b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/sample.rtf
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/sample.rtf
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/sample.rtf
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/shaksper.htm b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/shaksper.htm
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/shaksper.htm
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/shaksper.htm
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/style-sheet.dtd b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/style-sheet.dtd
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/style-sheet.dtd
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/style-sheet.dtd
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/t_night.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/t_night.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/t_night.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/t_night.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/taming.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/taming.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/taming.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/taming.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/tempest.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/tempest.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/tempest.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/tempest.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/testrtf.rtf b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/testrtf.rtf
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/testrtf.rtf
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/testrtf.rtf
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/timon.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/timon.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/timon.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/timon.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/titus.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/titus.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/titus.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/titus.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/troilus.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/troilus.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/troilus.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/troilus.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/two_gent.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/two_gent.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/two_gent.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/two_gent.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vs b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vs
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vs
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vs
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vx b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vx
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vx
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/vx
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/win_tale.xml b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/win_tale.xml
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/win_tale.xml
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/win_tale.xml
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.dcl b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.dcl
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.dcl
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.dcl
diff --git a/extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.soc b/extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.soc
similarity index 100%
rename from extensions/lib/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.soc
rename to extensions/testing/fakedata/impl/src/main/java/org/apache/isis/extensions/fakedata/dom/services/clobs/xml.soc
diff --git a/extensions/lib/fakedata/impl/src/test/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataServiceTest.java b/extensions/testing/fakedata/impl/src/test/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataServiceTest.java
similarity index 100%
rename from extensions/lib/fakedata/impl/src/test/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataServiceTest.java
rename to extensions/testing/fakedata/impl/src/test/java/org/apache/isis/extensions/fakedata/dom/services/FakeDataServiceTest.java
diff --git a/extensions/lib/fakedata/integtests/log4j2-test.xml b/extensions/testing/fakedata/integtests/log4j2-test.xml
similarity index 100%
rename from extensions/lib/fakedata/integtests/log4j2-test.xml
rename to extensions/testing/fakedata/integtests/log4j2-test.xml
diff --git a/extensions/lib/fakedata/integtests/pom.xml b/extensions/testing/fakedata/integtests/pom.xml
similarity index 100%
rename from extensions/lib/fakedata/integtests/pom.xml
rename to extensions/testing/fakedata/integtests/pom.xml
diff --git a/extensions/lib/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/FakeDataModuleIntegTestAbstract.java b/extensions/testing/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/FakeDataModuleIntegTestAbstract.java
similarity index 100%
rename from extensions/lib/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/FakeDataModuleIntegTestAbstract.java
rename to extensions/testing/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/FakeDataModuleIntegTestAbstract.java
diff --git a/extensions/lib/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Bootstrap_IntegTest.java b/extensions/testing/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Bootstrap_IntegTest.java
similarity index 100%
rename from extensions/lib/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Bootstrap_IntegTest.java
rename to extensions/testing/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Bootstrap_IntegTest.java
diff --git a/extensions/lib/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Smoke_IntegTest.java b/extensions/testing/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Smoke_IntegTest.java
similarity index 100%
rename from extensions/lib/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Smoke_IntegTest.java
rename to extensions/testing/fakedata/integtests/src/test/java/org/apache/isis/extensions/fakedata/integtests/tests/Smoke_IntegTest.java
diff --git a/extensions/lib/fakedata/integtests/toDoItems-actual.xlsx b/extensions/testing/fakedata/integtests/toDoItems-actual.xlsx
similarity index 100%
rename from extensions/lib/fakedata/integtests/toDoItems-actual.xlsx
rename to extensions/testing/fakedata/integtests/toDoItems-actual.xlsx
diff --git a/extensions/lib/fakedata/integtests/translations.pot b/extensions/testing/fakedata/integtests/translations.pot
similarity index 100%
rename from extensions/lib/fakedata/integtests/translations.pot
rename to extensions/testing/fakedata/integtests/translations.pot
diff --git a/extensions/testing/fixtures/src/main/doc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc b/extensions/testing/fixtures/src/main/doc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc
index 6efda1f..e9f5227 100644
--- a/extensions/testing/fixtures/src/main/doc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc
+++ b/extensions/testing/fixtures/src/main/doc/modules/fixtures/pages/fixture-scripts/api-and-usage.adoc
@@ -20,7 +20,7 @@ This is annotated to be rendered on the secondary "Prototyping" menu.
 
 The behaviour of this domain menu service can be refined by providing an implementation of the optional xref:refguide:applib-svc:testing/FixtureScriptsSpecificationProvider.adoc[`FixtureScriptsSpecificationProvider`] SPI.
 
-For example, here's the `FixtureScriptsSpecificationProvider` service that's generated by the xref:starters:simpleapp:about.adoc[SimpleApp archetype]:
+For example, here's the `FixtureScriptsSpecificationProvider` service that's generated by the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]:
 
 [source,java]
 ----
@@ -71,7 +71,7 @@ If you had defined many fixture scripts then a drop-down might become unwieldy,
 
 ----
 
-You are free, of course, to add additional "convenience" actions into it if you wish for the most commonly used/demo'd setups ; you'll find that the xref:starters:simpleapp:about.adoc[SimpleApp archetype] adds this additional action:
+You are free, of course, to add additional "convenience" actions into it if you wish for the most commonly used/demo'd setups ; you'll find that the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] adds this additional action:
 
 [source,java]
 ----
@@ -100,7 +100,7 @@ However, we strongly recommend that you use it to invoke actions on business obj
 That way, the fixture script will remain valid even if the underlying implementation of the system changes in the future.
 
 For example, here's a fixture script called `RecreateSimpleObjects`.
-(This used to be part of the xref:starters:simpleapp:about.adoc[SimpleApp archetype], though the archetype now ships with a more sophisticated design, discussed below):
+(This used to be part of the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype], though the archetype now ships with a more sophisticated design, discussed below):
 
 [source,java]
 ----
@@ -169,7 +169,7 @@ So, in this case, when the fixture script is executed we actually get 6 objects
 
 Fixture scripts can be called from integration tests just the same way that fixture scripts can call one another.
 
-For example, here's an integration test from the xref:starters:simpleapp:about.adoc[SimpleApp archetype]:
+For example, here's an integration test from the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]:
 
 [source,java]
 ----
@@ -251,7 +251,7 @@ public interface PersonaWithFinder<T> {
 }
 ----
 
-The xref:starters:simpleapp:about.adoc[SimpleApp archetype] provides a sample implementation of these interfaces:
+The link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] provides a sample implementation of these interfaces:
 
 [source,java]
 ----
diff --git a/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/maven-configuration.adoc b/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/maven-configuration.adoc
index 589a2af..a6f327c 100644
--- a/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/maven-configuration.adoc
+++ b/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/maven-configuration.adoc
@@ -6,7 +6,7 @@ include::_attributes.adoc[]
 
 
 
-Apache Isis' BDD spec support is automatically configured if you use the xref:starters:simpleapp:about.adoc[SimpleApp archetype].
+Apache Isis' BDD spec support is automatically configured if you use the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype].
 To set it up manually, update the `pom.xml` of your domain object model module:
 
 [source,xml]
diff --git a/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/writing-a-bdd-spec.adoc b/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/writing-a-bdd-spec.adoc
index c62bf61..5e10909 100644
--- a/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/writing-a-bdd-spec.adoc
+++ b/extensions/testing/specsupport/src/main/doc/modules/specsupport/pages/bdd-spec-support/writing-a-bdd-spec.adoc
@@ -26,7 +26,7 @@ The `glue` attribute of the Cucumber-JVM JUnit runner allows you to indicate whi
 There also needs to be one glue class that is used to bootstrap the runtime.
 
 
-Here's an example of a feature from the xref:starters:simpleapp:about.adoc[SimpleApp archetype]:
+Here's an example of a feature from the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype]:
 
 [source,java]
 ----
@@ -69,7 +69,7 @@ public class RunBddSpecs {
 ----
 
 The JSON formatter allows integration with enhanced reports.
-(Commented out) configuration for this is provided in the xref:starters:simpleapp:about.adoc[SimpleApp archetype].
+(Commented out) configuration for this is provided in the link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype].
 
 The bootstrapping of Apache Isis itself lives in a `BootstrappingGlue` step definition:
 
diff --git a/extensions/lib/unittestsupport/impl/pom.xml b/extensions/testing/unittestsupport/impl/pom.xml
similarity index 100%
rename from extensions/lib/unittestsupport/impl/pom.xml
rename to extensions/testing/unittestsupport/impl/pom.xml
diff --git a/extensions/testing/unittestsupport/impl/src/main/doc/antora.yml b/extensions/testing/unittestsupport/impl/src/main/doc/antora.yml
new file mode 100644
index 0000000..0d34b75
--- /dev/null
+++ b/extensions/testing/unittestsupport/impl/src/main/doc/antora.yml
@@ -0,0 +1,2 @@
+name: testing
+version: master
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/_attributes.adoc
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/_attributes.adoc
rename to extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/_attributes.adoc
diff --git a/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/nav.adoc b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/nav.adoc
new file mode 100644
index 0000000..13d0804
--- /dev/null
+++ b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/nav.adoc
@@ -0,0 +1,2 @@
+include::testing:ROOT:partial$component-nav.adoc[]
+
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/pages/_attributes.adoc
similarity index 100%
copy from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
copy to extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/pages/_attributes.adoc
diff --git a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/pages/about.adoc
similarity index 95%
rename from extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
rename to extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/pages/about.adoc
index 883c317..2ebe888 100644
--- a/extensions/persistence/h2console/src/main/doc/modules/h2console/pages/about.adoc
+++ b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/pages/about.adoc
@@ -1,6 +1,5 @@
-= H2 Console
+= Unit Test Support (extension)
 :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
-
+TODO
\ No newline at end of file
diff --git a/extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/partials/_attributes.adoc
similarity index 100%
rename from extensions/persistence/hsqldbmgr/src/main/doc/modules/hsqldbmgr/partials/_attributes.adoc
rename to extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/partials/_attributes.adoc
diff --git a/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/partials/module-nav.adoc b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/partials/module-nav.adoc
new file mode 100644
index 0000000..1c0f3d4
--- /dev/null
+++ b/extensions/testing/unittestsupport/impl/src/main/doc/modules/unit-test-support-ext/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+* xref:testing:unit-test-support-ext:about.adoc[Unit Test Support (extension)]
+
+
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/IsisModuleExtUnitTestSupport.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/IsisModuleExtUnitTestSupport.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/IsisModuleExtUnitTestSupport.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/IsisModuleExtUnitTestSupport.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/assertions/Asserting.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/assertions/Asserting.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/assertions/Asserting.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/assertions/Asserting.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/AbstractBeanPropertiesTest.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/AbstractBeanPropertiesTest.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/AbstractBeanPropertiesTest.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/AbstractBeanPropertiesTest.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForAnyPojo.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForAnyPojo.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForAnyPojo.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForAnyPojo.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForApplib.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForApplib.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForApplib.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForApplib.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForJoda.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForJoda.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForJoda.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/FixtureDatumFactoriesForJoda.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTester.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTester.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTester.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTester.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/matchers/IsisMatchers.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/matchers/IsisMatchers.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/matchers/IsisMatchers.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/matchers/IsisMatchers.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/privatecons/PrivateConstructorTester.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/privatecons/PrivateConstructorTester.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/privatecons/PrivateConstructorTester.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/privatecons/PrivateConstructorTester.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/reflect/ReflectUtils.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/reflect/ReflectUtils.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/reflect/ReflectUtils.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/reflect/ReflectUtils.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/repo/FinderInteraction.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/repo/FinderInteraction.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/repo/FinderInteraction.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/repo/FinderInteraction.java
diff --git a/extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/valuetypes/VT.java b/extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/valuetypes/VT.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/valuetypes/VT.java
rename to extensions/testing/unittestsupport/impl/src/main/java/org/apache/isis/extensions/unittestsupport/dom/valuetypes/VT.java
diff --git a/extensions/lib/unittestsupport/impl/src/test/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTesterTest_interference.java b/extensions/testing/unittestsupport/impl/src/test/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTesterTest_interference.java
similarity index 100%
rename from extensions/lib/unittestsupport/impl/src/test/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTesterTest_interference.java
rename to extensions/testing/unittestsupport/impl/src/test/java/org/apache/isis/extensions/unittestsupport/dom/bean/PojoTesterTest_interference.java
diff --git a/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/intro.adoc b/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/intro.adoc
index 6613bbf..1833e8f 100644
--- a/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/intro.adoc
+++ b/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/intro.adoc
@@ -36,7 +36,7 @@ As noted in the introduction, all the goals require an xref:refguide:applib-cm:c
 This can be extremely minimal; it isn't necessary to use the main `AppManifest` (in the `app` module) used to bootstrap the application, you can instead use a cut-down one.
 This then allows the plugins to be run during the build of the `dom` module, rather than having to run in the context of the `integtest` module.
 
-For example, the xref:starters:simpleapp:about.adoc[SimpleApp]'s
+For example, the link:https://github.com/apache/isis-app-simpleapp[SimpleApp]'s
 manifest is:
 
 [source,java]
@@ -82,6 +82,6 @@ We recommend the following:
 
 * run the `xsd` plugin in a new `xsd` submodule; contributed actions are irrelevant for this particular goal; having a separate submodule allows the configuration of both the `xsd` goal (to generate the XSD schemas) and any other XSD-related configuration to be kept in a single place.
 
-The xref:starters:simpleapp:about.adoc[SimpleApp archetype] reflects these recommendations for the `validate` and `swagger` goals.
+The link:https://github.com/apache/isis-app-simpleapp[SimpleApp archetype] reflects these recommendations for the `validate` and `swagger` goals.
 You can find an example of the `xsd` plugin in the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp] application.
 
diff --git a/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/validate.adoc b/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/validate.adoc
index 8b29174..50110d1 100644
--- a/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/validate.adoc
+++ b/legacy/testsupport/mavenplugin/src/main/doc/modules/mvn/pages/validate.adoc
@@ -106,7 +106,7 @@ mvn test -Dskip.isis-validate
 
 == Example of failure
 
-In the xref:starters:simpleapp:about.adoc[SimpleApp] application the `SimpleObject` defines an `updateName` action.
+In the link:https://github.com/apache/isis-app-simpleapp[SimpleApp] application the `SimpleObject` defines an `updateName` action.
 This has a supporting method:
 
 
diff --git a/site.yml b/site.yml
index 1f8564a..5b69ecf 100644
--- a/site.yml
+++ b/site.yml
@@ -140,11 +140,25 @@ content:
     - url: .
       start_path: extensions/core/spring/src/main/doc # extensions
       branches: HEAD
+
+    - url: .
+      start_path: extensions/lib/base/impl/src/main/doc # extensions
+      branches: HEAD
+    - url: .
+      start_path: extensions/lib/docx/impl/src/main/doc # extensions
+      branches: HEAD
+    - url: .
+      start_path: extensions/lib/excel/impl/src/main/doc # extensions
+      branches: HEAD
+
     - url: .
-      start_path: extensions/persistence/h2console/src/main/doc # extensions
+      start_path: extensions/persistence/flywayjdo/impl/src/main/doc # extensions
       branches: HEAD
     - url: .
-      start_path: extensions/persistence/hsqldbmgr/src/main/doc # extensions
+      start_path: extensions/persistence/h2console/impl/src/main/doc # extensions
+      branches: HEAD
+    - url: .
+      start_path: extensions/persistence/hsqldbmgr/impl/src/main/doc # extensions
       branches: HEAD
 
     - url: .
@@ -168,6 +182,10 @@ content:
     - url: .
       start_path: extensions/security/shiro-realm-ldap/src/main/doc # security
       branches: HEAD
+
+    - url: .
+      start_path: extensions/testing/fakedata/impl/src/main/doc # testing
+      branches: HEAD
     - url: .
       start_path: extensions/testing/fixtures/src/main/doc # testing
       branches: HEAD
@@ -175,6 +193,10 @@ content:
       start_path: extensions/testing/specsupport/src/main/doc # testing
       branches: HEAD
     - url: .
+      start_path: extensions/testing/unittestsupport/impl/src/main/doc # testing
+      branches: HEAD
+
+    - url: .
       start_path: extensions/vro/restclient/src/main/doc # vro
       branches: HEAD
     - url: .
diff --git a/starters/src/main/doc/modules/helloworld/pages/about.adoc b/starters/src/main/doc/modules/helloworld/pages/about.adoc
index 046ba52..75cf25e 100644
--- a/starters/src/main/doc/modules/helloworld/pages/about.adoc
+++ b/starters/src/main/doc/modules/helloworld/pages/about.adoc
@@ -10,7 +10,7 @@ Both the business logic and supporting bootstrapping classes are in a single Mav
 [TIP]
 ====
 We don't recommend that you use the helloworld archetype as the basis for your own applications.
-Instead, use the xref:starters:simpleapp:about.adoc[SimpleApp starter app].
+Instead, use the link:https://github.com/apache/isis-app-simpleapp[SimpleApp starter app].
 This also creates a minimal application, but provides more structure and example tests, useful as you build out your own app.
 ====
 
@@ -526,7 +526,7 @@ If you run into issues, please don't hesitate to ask for help on the link:http:/
 
 When you are ready to start working on your own app, we _don't_ recommend building on top of the helloworld app.
 
-Instead, we suggest that you start with the xref:starters:simpleapp:about.adoc[simpleapp archetype] instead.
+Instead, we suggest that you start with the link:https://github.com/apache/isis-app-simpleapp[simpleapp archetype] instead.
 Although a little more complex, it provides more structure and tests, all of which will help you as your application grows.
 
 
diff --git a/starters/src/main/doc/modules/simpleapp/pages/about.adoc b/starters/src/main/doc/modules/simpleapp/pages/about.adoc
index 145d496..9f0cc2f 100644
--- a/starters/src/main/doc/modules/simpleapp/pages/about.adoc
+++ b/starters/src/main/doc/modules/simpleapp/pages/about.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 NOTE: these notes are out-of-date and need to be reviewed.
 
 The quickest way to get started building an application "for real" is to run the `simpleapp` archetype.
-Like the xref:starters:helloworld:about.adoc[helloworld starter app], this too will generate a very simple one-class domain model (an entity called `SimpleObject` with a couple of properties).
+Like the link:https://github.com/apache/isis-app-helloworld[helloworld starter app], this too will generate a very simple one-class domain model (an entity called `SimpleObject` with a couple of properties).
 
 However, the generated application also provides more structure to assist you as your application grows.
 
@@ -686,10 +686,10 @@ The archetype provides
 
 == Using the App
 
-The generated application is almost identical similar to that generated by xref:starters:helloworld:about.adoc[helloworld starter app]; a description of how to use it can be found xref:starters:helloworld:about.adoc#using-the-app[here].
+The generated application is almost identical similar to that generated by link:https://github.com/apache/isis-app-helloworld[helloworld starter app]; a description of how to use it can be found link:https://github.com/apache/isis-app-helloworld#using-the-app[here].
 
 One additional feature that the simpleapp contains over the helloworld app is a home page.
-This shows all domain objects (as installed by fixture scripts, described xref:starters:simpleapp:about.adoc#running-with-fixtures[above]).
+This shows all domain objects (as installed by fixture scripts, described link:https://github.com/apache/isis-app-simpleapp#running-with-fixtures[above]).
 
 image::using-simple-app/030-home-page.png[width="600px",link="{imagesdir}/using-simple-app/030-home-page.png"]
 


[isis] 10/25: ISIS-2062: more messing about with scripts

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 a97dc6dcb7580b3c9ebe10e824048abc2a863be8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:33:15 2019 +0000

    ISIS-2062: more messing about with scripts
---
 scripts/ci/_adoc-antora.sh | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
index 774d043..43d1334 100644
--- a/scripts/ci/_adoc-antora.sh
+++ b/scripts/ci/_adoc-antora.sh
@@ -2,6 +2,12 @@
 set -e
 
 PLAYBOOK=$1
+
+SCRIPT_DIR=$( dirname "$0" )
+if [ -z "$PROJECT_ROOT_PATH" ]; then
+  PROJECT_ROOT_PATH=$(cd $SCRIPT_DIR/../.. ; pwd)
+fi
+
 if [ -z "$PLAYBOOK" ]; then
   PLAYBOOK=site.yml
 fi
@@ -13,13 +19,7 @@ if [ ! -f "$PLAYBOOK" ]; then
   PLAYBOOK=site.yml
 fi
 
-echo "\$PLAYBOOK = $PLAYBOOK"
-
-
-SCRIPT_DIR=$( dirname "$0" )
-if [ -z "$PROJECT_ROOT_PATH" ]; then
-  PROJECT_ROOT_PATH=$(cd $SCRIPT_DIR/../.. ; pwd)
-fi
+echo "\$PLAYBOOK = PROJECT_ROOT_PATH/$PLAYBOOK"
 
 if [ -z "$REVISION" ]; then
   if [ ! -z "$SHARED_VARS_FILE" ] && [ -f "$SHARED_VARS_FILE" ]; then


[isis] 07/25: ISIS-2062: improves build-site.sh script

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 57acef7ac2014bc338a51b35f6e64dc784d53bf9
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 17:53:26 2019 +0000

    ISIS-2062: improves build-site.sh script
---
 scripts/ci/_adoc-antora.sh | 3 +++
 scripts/ci/build-site.sh   | 1 +
 2 files changed, 4 insertions(+)

diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
index 1857053..ba41054 100644
--- a/scripts/ci/_adoc-antora.sh
+++ b/scripts/ci/_adoc-antora.sh
@@ -7,6 +7,9 @@ if [ -z "$PROJECT_ROOT_PATH" ]; then
 fi
 
 SITE_CONFIG=$1
+if [ -z "$SITE_CONFIG" ]; then
+  SITE_CONFIG=site.yml
+fi
 
 if [ -z "$REVISION" ]; then
   if [ ! -z "$SHARED_VARS_FILE" ] && [ -f "$SHARED_VARS_FILE" ]; then
diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index 6eb2645..74facc8 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -16,6 +16,7 @@ bash $SCRIPT_DIR/_adoc-gen-config.sh
 # check if anything had not been sync'd
 WC=$(git status --porcelain | wc -l)
 if [ "$WC" -ne "0" ]; then
+  git status --porcelain
   echo "Some examples are out of date; run sync-examples.sh and commit, then try again" >&2
   exit 1
 fi


[isis] 08/25: ISIS-2062: further improvements on scripts

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 7e9e4960d3013cf7f9348de1539b4d097865ee67
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:15:57 2019 +0000

    ISIS-2062: further improvements on scripts
---
 build-antora.sh             |  3 +++
 scripts/ci/_adoc-antora.sh  | 30 +++++++++++++++++++++++-------
 scripts/ci/build-site.sh    |  2 +-
 gen-adoc.sh => sync-adoc.sh |  0
 4 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/build-antora.sh b/build-antora.sh
new file mode 100644
index 0000000..24b5d7f
--- /dev/null
+++ b/build-antora.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+sh scripts/ci/_adoc-antora.sh $*
\ No newline at end of file
diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
index ba41054..556bfc4 100644
--- a/scripts/ci/_adoc-antora.sh
+++ b/scripts/ci/_adoc-antora.sh
@@ -1,16 +1,32 @@
 #!/bin/bash
 set -e
 
+PLAYBOOK=$1
+if [ -z "$PLAYBOOK" ]; then
+  PLAYBOOK=site.yml
+fi
+
+if [ ! -f "$PLAYBOOK" ]; then
+  PLAYBOOK=antora/playbooks/site-$PLAYBOOK.yml
+fi
+if [ ! -f "$PLAYBOOK" ]; then
+  PLAYBOOK=site.yml
+fi
+
+if [ -f "$PLAYBOOK" ]; then
+  PLAYBOOK=$(realpath -s $PLAYBOOK)
+else
+  PLAYBOOK=$(realpath -s site.yml)
+fi
+
+echo "\$PLAYBOOK = $PLAYBOOK"
+
+
 SCRIPT_DIR=$( dirname "$0" )
 if [ -z "$PROJECT_ROOT_PATH" ]; then
   PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
 fi
 
-SITE_CONFIG=$1
-if [ -z "$SITE_CONFIG" ]; then
-  SITE_CONFIG=site.yml
-fi
-
 if [ -z "$REVISION" ]; then
   if [ ! -z "$SHARED_VARS_FILE" ] && [ -f "$SHARED_VARS_FILE" ]; then
     . $SHARED_VARS_FILE
@@ -21,7 +37,6 @@ if [ -z "$REVISION" ]; then
   export REVISION="SNAPSHOT"
 fi
 
-echo "running antora ..."
 if [ -z "$ANTORA_CMD" ]; then
   ANTORA_CMD=$(command -v antora 2>/dev/null)
   if [ -z "$ANTORA_CMD" ]; then
@@ -29,5 +44,6 @@ if [ -z "$ANTORA_CMD" ]; then
   fi
 fi
 
-$ANTORA_CMD --stacktrace $SITE_CONFIG
+echo "running antora ..."
+$ANTORA_CMD --stacktrace $PLAYBOOK
 
diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index 74facc8..a082f76 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -17,7 +17,7 @@ bash $SCRIPT_DIR/_adoc-gen-config.sh
 WC=$(git status --porcelain | wc -l)
 if [ "$WC" -ne "0" ]; then
   git status --porcelain
-  echo "Some examples are out of date; run sync-examples.sh and commit, then try again" >&2
+  echo "Some examples are out of date; run sync-adoc.sh and commit, then try again" >&2
   exit 1
 fi
 
diff --git a/gen-adoc.sh b/sync-adoc.sh
similarity index 100%
rename from gen-adoc.sh
rename to sync-adoc.sh


[isis] 06/25: ISIS-2062: factors out _adoc-antora.sh

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 0a1ca4b21999f69f80911eca996fc32a09cb1650
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 17:49:35 2019 +0000

    ISIS-2062: factors out _adoc-antora.sh
---
 scripts/ci/_adoc-antora.sh | 30 ++++++++++++++++++++++++++++++
 scripts/ci/build-site.sh   | 30 ++----------------------------
 2 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
new file mode 100644
index 0000000..1857053
--- /dev/null
+++ b/scripts/ci/_adoc-antora.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -e
+
+SCRIPT_DIR=$( dirname "$0" )
+if [ -z "$PROJECT_ROOT_PATH" ]; then
+  PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
+fi
+
+SITE_CONFIG=$1
+
+if [ -z "$REVISION" ]; then
+  if [ ! -z "$SHARED_VARS_FILE" ] && [ -f "$SHARED_VARS_FILE" ]; then
+    . $SHARED_VARS_FILE
+    export $(cut -d= -f1 $SHARED_VARS_FILE)
+  fi
+fi
+if [ -z "$REVISION" ]; then
+  export REVISION="SNAPSHOT"
+fi
+
+echo "running antora ..."
+if [ -z "$ANTORA_CMD" ]; then
+  ANTORA_CMD=$(command -v antora 2>/dev/null)
+  if [ -z "$ANTORA_CMD" ]; then
+    ANTORA_CMD=$(npm bin)/antora
+  fi
+fi
+
+$ANTORA_CMD --stacktrace $SITE_CONFIG
+
diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index 3fbcd8a..6eb2645 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -6,19 +6,6 @@ if [ -z "$PROJECT_ROOT_PATH" ]; then
   PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
 fi
 
-if [ -z "$REVISION" ]; then
-  if [ ! -z "$SHARED_VARS_FILE" ] && [ -f "$SHARED_VARS_FILE" ]; then
-    . $SHARED_VARS_FILE
-    export $(cut -d= -f1 $SHARED_VARS_FILE)
-  fi
-fi
-
-if [ -z "$REVISION" ]; then
-  export REVISION="SNAPSHOT"
-fi
-
-
-SITE_CONFIG=$1
 
 bash $SCRIPT_DIR/_print-environment.sh "build-site"
 
@@ -26,27 +13,14 @@ bash $SCRIPT_DIR/_adoc-copy-examples.sh
 bash $SCRIPT_DIR/_adoc-gen-config.sh
 
 
-##
-## check if anything had not been sync'd
-##
+# check if anything had not been sync'd
 WC=$(git status --porcelain | wc -l)
 if [ "$WC" -ne "0" ]; then
   echo "Some examples are out of date; run sync-examples.sh and commit, then try again" >&2
   exit 1
 fi
 
-
-
-
-##
-## run antora
-##
-echo "running antora ..."
-if [ -z "$ANTORA_CMD" ]; then
-  ANTORA_CMD=$(npm bin)/antora
-fi
-
-$ANTORA_CMD --stacktrace $SITE_CONFIG
+bash $SCRIPT_DIR/_adoc-antora.sh $*
 
 # add a marker, that tells github not to use jekyll on the github pages folder
 touch ${PROJECT_ROOT_PATH}/antora/target/site/.nojekyll


[isis] 09/25: ISIS-2062: more messing about with scripts

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 ef3959b0634bd4f3b2f3b2b6ae398db0be62af04
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:31:14 2019 +0000

    ISIS-2062: more messing about with scripts
---
 build-antora.sh                                                   | 3 ---
 .../src/main/doc/modules/shiro-realm-ldap/pages/about.adoc        | 2 +-
 preview.sh                                                        | 2 +-
 scripts/ci/_adoc-antora.sh                                        | 8 +-------
 4 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/build-antora.sh b/build-antora.sh
deleted file mode 100644
index 24b5d7f..0000000
--- a/build-antora.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-sh scripts/ci/_adoc-antora.sh $*
\ No newline at end of file
diff --git a/extensions/security/shiro-realm-ldap/src/main/doc/modules/shiro-realm-ldap/pages/about.adoc b/extensions/security/shiro-realm-ldap/src/main/doc/modules/shiro-realm-ldap/pages/about.adoc
index c3f873b..395791c 100644
--- a/extensions/security/shiro-realm-ldap/src/main/doc/modules/shiro-realm-ldap/pages/about.adoc
+++ b/extensions/security/shiro-realm-ldap/src/main/doc/modules/shiro-realm-ldap/pages/about.adoc
@@ -8,7 +8,7 @@ see `shiro.ini` (example)
 
 [source,properties]
 ----
-include::security:shirorealmldap:example$shiro.ini[]
+include::security:shiro-realm-ldap:example$shiro.ini[]
 ----
 
 == Setting up Users/Groups in Apache Directory Studio
diff --git a/preview.sh b/preview.sh
index b285861..37beaa5 100644
--- a/preview.sh
+++ b/preview.sh
@@ -7,7 +7,7 @@ fi
 
 echo "building ..."
 export ANTORA_CMD=antora
-sh build-site.sh $PLAYBOOK_FILE
+sh build-site.sh $PLAYBOOK_FILE || exit 1
 
 echo "serving ..."
 serve antora/target/site
diff --git a/scripts/ci/_adoc-antora.sh b/scripts/ci/_adoc-antora.sh
index 556bfc4..774d043 100644
--- a/scripts/ci/_adoc-antora.sh
+++ b/scripts/ci/_adoc-antora.sh
@@ -13,18 +13,12 @@ if [ ! -f "$PLAYBOOK" ]; then
   PLAYBOOK=site.yml
 fi
 
-if [ -f "$PLAYBOOK" ]; then
-  PLAYBOOK=$(realpath -s $PLAYBOOK)
-else
-  PLAYBOOK=$(realpath -s site.yml)
-fi
-
 echo "\$PLAYBOOK = $PLAYBOOK"
 
 
 SCRIPT_DIR=$( dirname "$0" )
 if [ -z "$PROJECT_ROOT_PATH" ]; then
-  PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
+  PROJECT_ROOT_PATH=$(cd $SCRIPT_DIR/../.. ; pwd)
 fi
 
 if [ -z "$REVISION" ]; then


[isis] 22/25: ISIS-2062: more hacking

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 db7ed9aaeed6dc044b218c501e00789bb0a92264
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 16 17:15:14 2019 +0000

    ISIS-2062: more hacking
---
 antora/playbooks/site-security.yml | 2 +-
 preview.sh                         | 7 ++++++-
 site.yml                           | 2 +-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/antora/playbooks/site-security.yml b/antora/playbooks/site-security.yml
index cbba7d4..ec3676f 100644
--- a/antora/playbooks/site-security.yml
+++ b/antora/playbooks/site-security.yml
@@ -43,7 +43,7 @@ content:
       start_path: extensions/security/secman/model/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/pjdo/src/main/doc # security
+      start_path: extensions/security/secman/persistence-jdo/src/main/doc # security
       branches: HEAD
     - url: .
       start_path: extensions/security/secman/shiro-realm/src/main/doc # security
diff --git a/preview.sh b/preview.sh
index 03caaa5..d8c6433 100644
--- a/preview.sh
+++ b/preview.sh
@@ -1,7 +1,12 @@
 #!/usr/bin/env bash
 PLAYBOOK_FILE=site.yml
 if [[ $# -gt 0 ]]; then
-  PLAYBOOK_FILE=antora/playbooks/site-$1.yml
+
+  if [ -f $1 ]; then
+    PLAYBOOK_FILE=$1
+  else
+    PLAYBOOK_FILE=antora/playbooks/site-$1.yml
+  fi
   shift
 fi
 
diff --git a/site.yml b/site.yml
index 722ff16..1f8564a 100644
--- a/site.yml
+++ b/site.yml
@@ -160,7 +160,7 @@ content:
       start_path: extensions/security/secman/model/src/main/doc # security
       branches: HEAD
     - url: .
-      start_path: extensions/security/secman/pjdo/src/main/doc # security
+      start_path: extensions/security/secman/persistence-jdo/src/main/doc # security
       branches: HEAD
     - url: .
       start_path: extensions/security/secman/shiro-realm/src/main/doc # security


[isis] 04/25: ISIS-2062: renames adoc-gen.sh to gen-adoc.sh

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 0936ef6ecca5efeb0bed3f5ee17e5b6730c3e401
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 17:35:35 2019 +0000

    ISIS-2062: renames adoc-gen.sh to gen-adoc.sh
---
 adoc-gen.sh => gen-adoc.sh | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/adoc-gen.sh b/gen-adoc.sh
similarity index 100%
rename from adoc-gen.sh
rename to gen-adoc.sh


[isis] 20/25: ISIS-2072: updates site-core.yml, fix url ref

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 63c50abcba72a1cfce1dce854190b05e4e0f4f45
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 16 17:12:19 2019 +0000

    ISIS-2072: updates site-core.yml, fix url ref
---
 antora/playbooks/site-core.yml | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/antora/playbooks/site-core.yml b/antora/playbooks/site-core.yml
index f2a3024..3759e2a 100644
--- a/antora/playbooks/site-core.yml
+++ b/antora/playbooks/site-core.yml
@@ -7,42 +7,42 @@ content:
   sources:
 
 # antora
-    - url: ../..
+    - url: .
       start_path: antora/components/toc # toc
       branches: HEAD
 
-    - url: ../..
+    - url: .
       start_path: antora/components/core # core
       branches: HEAD
 
 # core
-    - url: ../..
+    - url: .
       start_path: core/codegen-bytebuddy/src/main/doc # core
       branches: HEAD
-    - url: ../..
+    - url: .
       start_path: core/commons/src/main/doc # core
       branches: HEAD
-    - url: ../..
+    - url: .
       start_path: core/detached-tests/src/main/doc # core
       branches: HEAD
-    - url: ../..
+    - url: .
       start_path: core/metamodel/src/main/doc # core
       branches: HEAD
-    - url: ../..
+    - url: .
       start_path: core/runtime/src/main/doc # core
       branches: HEAD
-    - url: ../..
+    - url: .
       start_path: core/webboot-springboot/src/main/doc # core
       branches: HEAD
-    - url: ../..
+    - url: .
       start_path: core/runtime-services/src/main/doc # core
       branches: HEAD
-    - url: ../..
+    - url: .
       start_path: core/webapp/src/main/doc # core
       branches: HEAD
 
 # examples
-    - url: ../..
+    - url: .
       start_path: examples/smoketests/src/main/doc # core
       branches: HEAD
 


[isis] 24/25: ISIS-2062: reviewing 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 adfa1d836f670a963128a022d13bd12ac59c9a46
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Dec 17 23:56:34 2019 +0100

    ISIS-2062: reviewing docs
    
    also:
    - moves CommandExecutorServiceDefault package in line with CommandExecutorService API.
    - adds hrefs for social
    - removes mention of DomainServiceLayout#menuOrder
---
 .../refguide/modules/ROOT/pages/about.adoc         |   1 +
 .../domain-services-api-for-applications.adoc      |   2 +-
 .../security/modules/ROOT/partials/module-nav.adoc |   2 +-
 .../components/toc/modules/ROOT/pages/about.adoc   |  39 +++++---
 .../components/toc/modules/ROOT/pages/support.adoc |   1 -
 .../pages/what-is-apache-isis/screencasts.adoc     |   5 -
 .../replacing-default-service-implementations.adoc |  30 ++----
 .../framework-provided.adoc                        |   1 -
 .../domain-services/scoped-services.adoc           |   3 +-
 antora/supplemental-ui/css/site-custom.css         |  16 ++++
 antora/supplemental-ui/index.html                  |   7 +-
 .../examples/annotation/OrderPrecedence.java       |   4 +-
 .../modules/applib-ant/pages/DomainService.adoc    |   4 -
 .../applib-ant/pages/DomainServiceLayout.adoc      |   5 -
 .../pages/DomainServiceLayout/menuBar.adoc         |   4 +-
 .../pages/DomainServiceLayout/named.adoc           |   7 --
 .../pages/classes/super/AbstractSubscriber.adoc    |   2 +-
 .../services/acceptheader/AcceptHeaderService.java |   7 +-
 .../examples/services/command/CommandContext.java  |   9 +-
 .../main/doc/modules/applib-svc/pages/about.adoc   |  69 +++++---------
 .../applib-svc/pages/application-layer-api.adoc    |  15 +--
 .../ActionInvocationContext.adoc                   | 102 ---------------------
 .../application-layer-api/BackgroundService.adoc   |  10 +-
 .../application-layer-api/CommandContext.adoc      |  42 +++++----
 .../application-layer-api/InteractionContext.adoc  |   4 +-
 .../application-layer-api/MessageService.adoc      |   2 +-
 .../SessionManagementService.adoc                  |   2 +-
 .../applib-svc/pages/application-layer-spi.adoc    |   1 +
 .../applib-svc/pages/bootstrapping-spi.adoc        |   2 +-
 .../bootstrapping-spi/ClassDiscoveryService.adoc   |   2 +-
 .../modules/applib-svc/pages/core-domain-api.adoc  |   2 +-
 .../pages/core-domain-api/EventBusService.adoc     |   9 +-
 .../pages/core-domain-api/Scratchpad.adoc          |   2 +-
 .../modules/applib-svc/pages/integration-api.adoc  |   2 +-
 .../pages/integration-api/BookmarkService.adoc     |   2 +-
 .../pages/integration-api/JaxbService.adoc         |   2 +-
 .../pages/integration-api/MementoService.adoc      |   2 +-
 .../doc/modules/applib-svc/pages/metadata-api.adoc |   2 +-
 .../applib-svc/pages/persistence-layer-api.adoc    |   2 +-
 .../persistence-layer-api/QueryResultsCache.adoc   |   2 +-
 .../applib-svc/pages/persistence-layer-spi.adoc    |   2 +-
 .../applib-svc/pages/presentation-layer-api.adoc   |   2 +-
 .../AcceptHeaderService.adoc                       |  16 +---
 .../presentation-layer-api/GuiceBeanProvider.adoc  |   2 +-
 .../applib-svc/pages/presentation-layer-spi.adoc   |   2 +-
 .../ContentMappingService.adoc                     |   6 +-
 .../presentation-layer-spi/GridSystemService.adoc  |  14 ++-
 .../pages/presentation-layer-spi/HintStore.adoc    |   2 +-
 .../presentation-layer-spi/RoutingService.adoc     |  10 +-
 .../TableColumnOrderService.adoc                   |   4 +-
 .../presentation-layer-spi/UrlEncodingService.adoc |   2 +-
 .../main/doc/modules/applib-svc/pages/testing.adoc |   2 +-
 .../modules/applib-svc/partials/module-nav.adoc    |   2 -
 .../isis/applib/annotation/OrderPrecedence.java    |   4 +-
 .../applib/services/command/CommandContext.java    |   7 +-
 .../services/command/spi/CommandService.java       |   8 +-
 .../applib/services/iactn/InteractionContext.java  |  13 +--
 .../runtime-services/pages/application-layer.adoc  |   2 +-
 .../runtime-services/pages/persistence-layer.adoc  |   2 +-
 .../PublishingServiceInternal.adoc                 |   2 +-
 .../runtime-services/pages/presentation-layer.adoc |   2 +-
 .../ContentNegotiationService.adoc                 |   2 +-
 .../presentation-layer/RepresentationService.adoc  |   2 +-
 .../services/IsisModuleRuntimeServices.java        |   3 +-
 .../CommandExecutorServiceDefault.java             |   2 +-
 migration-notes.adoc                               |   1 +
 preview.sh                                         |   1 +
 scripts/ci/build-site.sh                           |  14 +--
 68 files changed, 206 insertions(+), 352 deletions(-)

diff --git a/antora/components/refguide/modules/ROOT/pages/about.adoc b/antora/components/refguide/modules/ROOT/pages/about.adoc
index 8e217d3..53bdad6 100644
--- a/antora/components/refguide/modules/ROOT/pages/about.adoc
+++ b/antora/components/refguide/modules/ROOT/pages/about.adoc
@@ -1,5 +1,6 @@
 = Reference Guides
 include::_attributes.adoc[]
+:page-role: -toc
 
 The reference guides cover:
 
diff --git a/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc b/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
index 90ea898..f5f5eeb 100644
--- a/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
+++ b/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
@@ -1,4 +1,4 @@
-= Domain Services (API for Applications)
+= Domain Services
 :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/module-nav.adoc b/antora/components/security/modules/ROOT/partials/module-nav.adoc
index 56560ac..f5385ed 100644
--- a/antora/components/security/modules/ROOT/partials/module-nav.adoc
+++ b/antora/components/security/modules/ROOT/partials/module-nav.adoc
@@ -1,4 +1,4 @@
-* xref:security:ROOT:domain-services-api-for-applications.adoc[Domain Services (API for Applications)]
+* xref:security:ROOT:domain-services-api-for-applications.adoc[Domain Services]
 
 
 
diff --git a/antora/components/toc/modules/ROOT/pages/about.adoc b/antora/components/toc/modules/ROOT/pages/about.adoc
index 13b8e05..b299ec9 100644
--- a/antora/components/toc/modules/ROOT/pages/about.adoc
+++ b/antora/components/toc/modules/ROOT/pages/about.adoc
@@ -47,8 +47,13 @@ include::_attributes.adoc[]
 [discrete]
 == Components
 
+_Viewers_
+
 * xref:vw:ROOT:about.adoc[Wicket UI]
 * xref:vro:ROOT:about.adoc[Restful Objects (REST API)]
+
+_Persistence_
+
 * xref:pjdo:ROOT:about.adoc[DataNucleus Object Store]
 
 
@@ -65,15 +70,20 @@ include::_attributes.adoc[]
 [discrete]
 == Support
 
-* xref:toc:devguide:about.adoc[Developers' Guide]
-* xref:toc:mavendeps:about.adoc[Maven dependencies]
+* *xref:toc:ROOT:mailing-list/how-to-subscribe.adoc[Mailing Lists]*
+* link:https://the-asf.slack.com/archives/CFC42LWBV[Slack]
+* link:https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87[JIRA]
 
-_Mailing Lists_
 
-* xref:toc:ROOT:mailing-list/how-to-subscribe.adoc[How to subscribe]
-* link:https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87[JIRA] +
+_Resources_
 
 
+* *xref:toc:devguide:about.adoc[Developers' Guide]*
+* xref:toc:mavendeps:about.adoc[Maven dependencies]
+* link:https://cwiki.apache.org/confluence/display/ISIS/Index[ASF Wiki]
+* link:https://stackoverflow.com/questions/tagged/isis[Stack Overflow]
+* link:https://twitter.com/ApacheIsis[Twitter]
+
 |
 [discrete]
 == Releases
@@ -82,11 +92,12 @@ _Mailing Lists_
 * xref:toc:relnotes:about.adoc[Release Notes]
 * xref:toc:mignotes:about.adoc[Migration Notes]
 
-_Other Resources_
+_Nightly Builds (not ASF)_
+
+* link:https://github.com/apache-isis-committers/isis-nightly[CI]
+* link:https://repo.incode.cloud/[Maven Repo]
+* link:https://apache-isis-committers.github.io/isis-nightly/toc/about.html[Website preview]
 
-* link:https://cwiki.apache.org/confluence/display/ISIS/Index[ASF Wiki]
-* link:https://fisheye.apache.org/browse/~br=master/isis-git/[ASF Fisheye]
-* link:http://stackoverflow.com/questions/tagged/isis[Stack Overflow]
 
 
 |
@@ -96,10 +107,15 @@ _Other Resources_
 *  xref:toc:comguide:about.adoc[Committers' Guide]
 ** xref:toc:comguide:about.adoc#cutting-a-release[Cutting a Release]
 ** xref:toc:comguide:about.adoc#verifying-releases[Verifying a Release]
-*  xref:core:ROOT:about.adoc[Core Framework]
-
+* xref:core:ROOT:about.adoc[Core Framework]
 * xref:more-thanks/more-thanks.adoc[Acknowledgements]
 
+
+_Analysis_
+
+* link:https://sonarcloud.io/dashboard?id=apache_isis[SonarCloud.io]
+* link:https://fisheye.apache.org/browse/~br=master/isis-git/[ASF Fisheye]
+
 |
 [discrete]
 == Further reading
@@ -142,7 +158,6 @@ _Experiments_
 
 * link:https://github.com/sebastianslutzky/AngularViewerCLI[AngularViewer]
 * link:https://github.com/joerg-rade/kroviz[Kroviz]
-* link:https://platform.incode.org[Incode Platform]
 
 _nb: not ASF_
 
diff --git a/antora/components/toc/modules/ROOT/pages/support.adoc b/antora/components/toc/modules/ROOT/pages/support.adoc
index e2eb8ea..c84152f 100644
--- a/antora/components/toc/modules/ROOT/pages/support.adoc
+++ b/antora/components/toc/modules/ROOT/pages/support.adoc
@@ -12,7 +12,6 @@ This page lists additional resources to assist the developer when building appli
 ** xref:toc:devguide:contributing.adoc[Pull requests]
 
 * xref:toc:mavendeps:about.adoc[Maven dependencies]
-* xref:toc:mixins:about.adoc[Maven mixins]
 
 
 == Help
diff --git a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
index c821679..a16bcf3 100644
--- a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
+++ b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
@@ -144,11 +144,6 @@ Implementing business logic using a (no-arg) action, and associating with a prop
 
 
 
-|link:https://www.youtube.com/watch?v=0naoVsWppuQ[013^] +
-Invoking (no-arg) action on multiple objects at once (using xref:refguide:applib-ant:Action.adoc#invokeOn[`@Action#invokeOn()`], and using the xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`] domain service for a smoother end-user experience.
-|||x||||||x||
-
-
 
 
 
diff --git a/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc b/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
index 7046d91..2ba7ad7 100644
--- a/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
+++ b/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
@@ -10,46 +10,30 @@ The framework provides default implementations for many of the xref:refguide:app
 This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
 
 For example, suppose you wanted to provide your own implementation of xref:refguide:applib-svc:presentation-layer-spi/LocaleProvider.adoc[`LocaleProvider`].
-The trick is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute, specifying a low number (typically `"1"`).
+The trick is to use the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation or equivalent mechanism.
 
 Here's how:
 
 [source,java]
 ----
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
+@Service
+@Order(OrderPrecedence.HIGH)                                // <1>
 public class MyLocaleProvider implements LocaleProvider {
     @Override
-    public Locale getLocale() {
-        return ...
-    }
+    public Locale getLocale() { /* ... */ }
 }
 ----
-
-The framework uses the value of the `menuOrder` attribute to determine priority; lowest number wins.
-
-However, there is no need to specify the `menuOrder` attribute: its default value is now set to a lower value (specifically: `Integer.MAX_VALUE - 100`) than all of the framework-provided implementations, and thus always takes precedence.
-
-Thus, if a single instance is to be injected, eg:
-
-[source,java]
-----
-@javax.inject.Inject
-LocalProvider localeProvider;
-----
-
-then the custom implementation will be used in preference to the framework's default implementation.
+<1> `OrderPrecedence` (in the Apache Isis applib) provides some standard values.
 
 If multiple instances are injected, eg:
 
 [source,java]
 ----
 @javax.inject.Inject
-List<LocalProvider> localeProviders;
+private List<LocalProvider> localeProviders;
 ----
 
-then all implementations will be present in the list, ordered by priority; your custom implementation will be first in the list.
+then all implementations will be present in the list, ordered by priority.
 
 
 
diff --git a/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc b/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc
index c87acd0..8055994 100644
--- a/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc
+++ b/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc
@@ -39,7 +39,6 @@ Commands/Interactions/Background/Auditing/Publishing/Profiling:
 Information Sharing:
 
 * xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`]
-* xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`]
 * xref:refguide:applib-svc:persistence-layer-api/QueryResultsCache.adoc[`QueryResultsCache`]
 
 UserManagement:
diff --git a/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc b/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc
index 536724b..2555a9f 100644
--- a/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc
+++ b/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc
@@ -19,5 +19,6 @@ public class MyService extends AbstractService {
 }
 ----
 
-The framework provides a number of request-scoped services, include a xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service query results caching through the xref:refguide:applib-svc:persistence-layer-api/QueryResultsCache.adoc[`QueryResultsCache`], and support for co-ordinating bulk actions through the xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`] service.  See the xref:refguide:applib-svc:about.adoc[domai [...]
+The framework provides a number of request-scoped services, including a xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service and a query results caching through the xref:refguide:applib-svc:persistence-layer-api/QueryResultsCache.adoc[`QueryResultsCache`].
+See the xref:refguide:applib-svc:about.adoc[domain services] reference guide for further details.
 
diff --git a/antora/supplemental-ui/css/site-custom.css b/antora/supplemental-ui/css/site-custom.css
index eda7e1f..9be8476 100644
--- a/antora/supplemental-ui/css/site-custom.css
+++ b/antora/supplemental-ui/css/site-custom.css
@@ -1,3 +1,19 @@
 div.paragraph code {
     color: darkmagenta;
 }
+
+.content .ulist {
+    margin-top: 0.2rem;
+}
+
+.content h2 {
+    margin-bottom: 9px;
+}
+
+.content > .ulist ul {
+    padding-left: 1rem;
+}
+
+.content .ulist .ulist ul {
+    padding-left: 1rem;
+}
diff --git a/antora/supplemental-ui/index.html b/antora/supplemental-ui/index.html
index 3d97351..d4f78f0 100644
--- a/antora/supplemental-ui/index.html
+++ b/antora/supplemental-ui/index.html
@@ -50,12 +50,13 @@
       -->
     </div>
     <div class="social-links float-right">
-      <a href="https://www.youtube.com/playlist?list=PLbRpnAmQ6xsBGB_mRAUob8WRBsSL_IsBO" class="youtube"><i class="fa fa-youtube"></i></a>
+      <a href="https://lists.apache.org/list.html?users@isis.apache.org" class="email"><i class="fa fa-at"></i></a>
+      <a href="https://the-asf.slack.com/archives/CFC42LWBV" class="slack"><i class="fa fa-slack"></i></a>
+      <a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87" class="bug"><i class="fa fa-bug"></i></a>
+      <a href="https://stackoverflow.com/questions/tagged/isis" class="stackoverflow"><i class="fa fa-stack-overflow"></i></a>
       <a href="https://twitter.com/ApacheIsis" class="twitter"><i class="fa fa-twitter"></i></a>
       <!--
-              <a href="#" class="facebook"><i class="fa fa-facebook"></i></a>
               <a href="#" class="instagram"><i class="fa fa-instagram"></i></a>
-              <a href="#" class="google-plus"><i class="fa fa-google-plus"></i></a>
               <a href="#" class="linkedin"><i class="fa fa-linkedin"></i></a>
       -->
     </div>
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
index a62cf10..201061f 100644
--- a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
@@ -23,6 +23,7 @@ import org.springframework.core.Ordered;
 
 import lombok.experimental.UtilityClass;
 
+// tag::refguide[]
 @UtilityClass
 public class OrderPrecedence {
 
@@ -55,4 +56,5 @@ public class OrderPrecedence {
      */
     public static final int LOW = OrderPrecedence.LOWEST / 2;
 
-}
\ No newline at end of file
+}
+// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc
index cecc957..5593e13 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc
@@ -37,10 +37,6 @@ The instanceId for services is always "1".
 |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()`]
-
 |===
 
 
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc
index f8d88cc..fe3a3c3 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc
@@ -28,11 +28,6 @@ The table below summarizes the annotation's attributes.
 |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)
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
index 083d9a9..47930a8 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
@@ -33,8 +33,8 @@ Domain services placed on the `TERTIARY` appear in the menu bar associated with
 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.
-
+The grouping of multiple domain services actions within a single drop-down is managed by the link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
+Alternatively, use `menubars.layout.xml` layout file to organize menu action items arbitrarily.
 
 [NOTE]
 ====
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
index d27394e..cbb6766 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
@@ -8,13 +8,6 @@ include::_attributes.adoc[]
 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]
diff --git a/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc b/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc
index ce45137..fa3cd93 100644
--- a/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc
+++ b/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc
@@ -10,6 +10,6 @@ It uses xref:refguide:applib-ant:PostConstruct.adoc[`@PostConstruct`] and xref:r
 
 It's important that subscribers register before any domain services that might emit events on the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`].
 For example, the xref:secman:ROOT:about.adoc[SecMan extension] provides a domain service that automatically seeds certain domain entities; these will generate xref:refguide:applib-cm:classes/lifecycleevent.adoc[lifecycle events] and so any subscribers must be registered before such seed services.
-The easiest way to do this is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
+The easiest way to do this is to use the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
 
 As a convenience, the `AbstractSubscriber` specifies this attribute.
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
index 8072669..26640d2 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
@@ -24,9 +24,8 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
+// tag::refguide[]
 public interface AcceptHeaderService {
-
-    @Programmatic
-    List<MediaType> getAcceptableMediaTypes();
-
+    List<MediaType> getAcceptableMediaTypes();  // <1>
 }
+// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
index 95cdf54..477fa03 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.command;
 
+import lombok.Getter;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Named;
 
@@ -35,6 +37,7 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
  * {@link org.apache.isis.applib.annotation.DomainService}.  This means that it is automatically registered and
  * available for use; no further configuration is required.
  */
+// tag::refguide[]
 @Service
 @Named("isisApplib.CommandContext")
 @RequestScoped
@@ -43,12 +46,9 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 @Qualifier("Default")
 public class CommandContext {
 
+    @Getter
     private Command command;
 
-    public Command getCommand() {
-        return command;
-    }
-
     /**
      * <b>NOT API</b>: intended to be called only by the framework.
      */
@@ -57,3 +57,4 @@ public class CommandContext {
     }
 
 }
+// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc
index f6d1c63..6312a92 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc
@@ -84,68 +84,47 @@ Alternatively the object can be instantiated simply using `new`, then services i
 
 The framework provides default implementations for many of the domain services.
 This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
+This is most commonly done using the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[@Order] annotation.
+Inspect the source code of the default implementation to determine which value to use.
+The `OrderPrecedence` class provides some pre-defined precedences:
 
-The trick is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]
-attribute, specifying a low number (typically `"1"`).
+[source,java]
+----
+include::applib-ant:example$annotation/OrderPrecedence.java[tags=refguide]
+----
+
+Spring offers a number of other mechanisms to specify the ordering; these can also be used.
+
+For some domain services, all framework will delegate to all available implementation, using a chain-of-responsibility pattern):
+These include:
 
-[NOTE]
-====
-For a small number of domain services, all implementations are used (following the chain-of-responsibility pattern), not just the first one.
-The services in question are:
 xref:refguide:applib-svc:presentation-layer-spi/ContentMappingService.adoc[`ContentMappingService`],
 xref:refguide:applib-svc:presentation-layer-spi/GridSystemService.adoc[`GridSystemService`], and
 xref:refguide:applib-svc:presentation-layer-spi/RoutingService.adoc[`RoutingService`].
-====
 
 For example, suppose you wanted to provide your own implementation of xref:refguide:applib-svc:presentation-layer-spi/LocaleProvider.adoc[`LocaleProvider`].
-Here's how:
+The default implementation has these annotations:
 
 [source,java]
 ----
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
-@DomainServiceLayout(
-        menuOrder = "1"                             // <1>
-)
-public class MyLocaleProvider implements LocaleProvider {
-    @Override
-    public Locale getLocale() {
-        return ...
-    }
-}
+@Service
+@Named("isisWicketViewer.LocaleProviderWicket")
+@Order(OrderPrecedence.MIDPOINT)
+@Qualifier("Wicket")
+@Log4j2
+public class LocaleProviderWicket implements LocaleProvider { /* ... */ }
 ----
-<1> takes precedence over the default implementation.
 
-
-It's also quite common to want to decorate the existing implementation (ie have your own implementation delegate to the default); this is also possible and quite easy.
-The idea is to have the framework inject all implementations of the service, and then to delegate to the first one that isn't "this" one:
+To override this, use something like:
 
 [source,java]
 ----
-@DomainService(nature=NatureOfService.DOMAIN)
-@DomainServiceLayout(
-        menuOrder = "1"                                                                 // <1>
-)
-public class MyLocaleProvider implements LocaleProvider {
-    @Override
-    public Locale getLocale() {
-        return getDelegateLocaleProvider().getLocale();                                 // <2>
-    }
-    private LocaleProvider getDelegateLocaleProvider() {
-        return Iterables.tryFind(localeProviders, input -> input != this).orNull();     // <3>
-    }
-    @Inject
-    List<LocaleProvider> localeProviders;                                               // <4>
-}
+@Service
+@Order(OrderPrecedence.HIGH)
+public class MyLocaleProvider implements LocaleProvider { /* ... */ }
 ----
-<1> takes precedence over the default implementation when injected elsewhere.
-<2> this implementation merely delegates to the default implementation
-<3> find the first implementation that isn't _this_ implementation (else infinite loop!)
-<4> injects all implementations, including this implemenation
-
-The above code could be improved by caching the delegateLocaleProvider once located (rather than searching each time).
 
+It's not necessary to annotate `@Named` or `@Qualifier`, but could be considered good practice.
 
 
 == Command and Events
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc
index b02650b..c29a8fd 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc
@@ -2,6 +2,7 @@
 :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:
+:page-role: -toc -title
 
 
 
@@ -20,18 +21,6 @@ It also lists their corresponding implementation, either a default implementatio
 |Implementation
 |Notes
 
-|xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`o.a.i.applib.` +
-`services.actinv` +
-`ActionInvocation-` +
-`Context`]
-|Request-scoped access to whether action is invoked on object and/or on collection of objects
-|`ActionInvocationContext` +
-``o.a.i.core`` +
-``isis-core-applib``
-|API is also concrete class
-
-
-
 |xref:refguide:applib-svc:application-layer-api/BackgroundService.adoc[`o.a.i.applib.` +
 `services.background` +
 `BackgroundService`]
@@ -43,6 +32,8 @@ It also lists their corresponding implementation, either a default implementatio
 |depends on: +
 xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommand-Service`]
 
+NOTE: TODO: v2: this has been replaced by `WrapperFactory#async(...)`
+
 
 |xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`o.a.i.applib.` +
 `services.command` +
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc
deleted file mode 100644
index 47b4432..0000000
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-[[ActionInvocationContext]]
-= `ActionInvocationContext` (deprecated)
-: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: remove this domain service
-
-The `ActionInvocationContext` domain service is a xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`] service intended to support the implementation of "bulk" actions annotated with xref:refguide:applib-ant:Action.adoc#invokeOn[`@Action#invokeOn()`].
-This allows the user to select multiple objects in a table and then invoke the same action against all of them.
-
-When an action is invoked in this way, this service allows each object instance to "know where it is" in the collection; it acts a little like an iterator.
-In particular, an object can determine if it is the last object to be called, and so can perform special processing, eg to return a summary calculated result.
-
-[WARNING]
-====
-Bulk actions are now deprecated, which means that this service is also deprecated.
-
-Instead, the recommended technique is to define a view model to wrap around the collection, and then to use an action on the view model, associated with the collection and with a collection parameter), to act upon the selected items of the collection.
-====
-
-== API & Implementation
-
-The API defined by the service is:
-
-[source,java]
-----
-@DomainService(nature = NatureOfService.DOMAIN)
-@RequestScoped                                        // <1>
-public static class ActionInvocationContext {
-    public InvokedOn getInvokedOn() { /* ... */ }           // <2>
-    public List<Object> getDomainObjects() { /* ... */ }    // <3>
-    public int getSize() { /* ... */ }
-    public int getIndex() { /* ... */ }                     // <4>
-    public boolean isFirst() { /* ... */ }
-    public boolean isLast() { /* ... */ }
-}
-----
-<1> is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`], so this domain service instance is scoped to a particular request and is then destroyed
-<2> an enum set to either `OBJECT` (if action has been invoked on a single object) or `COLLECTION` (if has been invoked on a collection).
-<3> returns the list of domain objects which are being acted upon
-<4> is the 0-based index to the object being acted upon.
-
-
-To provide an alternative implementation, subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
-
-
-== Usage
-
-For actions that are void or that return null, Apache Isis will return to the list once executed.
-But for bulk actions that are non-void, Apache Isis will render the returned object/value from the last object invoked (and simply discards the object/value of all actions except the last).
-
-One idiom is for the domain objects to also use the xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service to share information, for example to aggregate values.
-The `ActionInvocationContext#isLast()` method can then be used to determine if all the information has been gathered, and then do something with it (eg derive variance across a range of values, render a graph etc).
-
-More prosaically, the `ActionInvocationContext` can be used to ensure that the action behaves appropriately depending on how it has been invoked (on a single object and/or a collection) whether it is called in bulk mode or regular mode.
-Here's a snippet of code from the bulk action in the Isis addon example https://github.com/isisaddons/isis-app-todoapp/[todoapp] (not ASF):
-
-[source,java]
-----
-public class ToDoItem ... {
-    @Action(invokeOn=InvokeOn.OBJECTS_AND_COLLECTIONS)
-    public ToDoItem completed() {
-        setComplete(true);
-        ...
-        return actionInvocationContext.getInvokedOn() == InvokedOn.OBJECT
-                ? this  // <1>
-                : null; // <2>
-    }
-    @Inject
-    ActionInvocationContext actionInvocationContext;
-}
-----
-<1> if invoked as a regular action, return this object;
-<2> otherwise (if invoked on collection of objects), return null, so that the xref:vw:ROOT:about.adoc[Wicket viewer] will re-render the list of objects
-
-
-
-
-
-== Unit testing support
-
-The `ActionInvocationContext` class also has a couple of static factory methods intended to support unit testing:
-
-[source,java]
-----
-@DomainService(nature = NatureOfService.DOMAIN)
-@RequestScoped
-public class ActionInvocationContext {
-    public static ActionInvocationContext onObject(final Object domainObject) {
-        return new ActionInvocationContext(InvokedOn.OBJECT, Collections.singletonList(domainObject));
-    }
-    public static ActionInvocationContext onCollection(final Object... domainObjects) {
-        return onCollection(Arrays.asList(domainObjects));
-    }
-    public static ActionInvocationContext onCollection(final List<Object> domainObjects) {
-        return new ActionInvocationContext(InvokedOn.COLLECTION, domainObjects);
-    }
-    ...
-}
-----
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc
index 076d58e..a742d9e 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc
@@ -1,13 +1,13 @@
 [[BackgroundService]]
-= `BackgroundService2`
+= `BackgroundService`
 :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 `BackgroundService2` domain service (and its various supertypes), and also the companion xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService2`] SPI service, enable commands to be persisted such that they may be invoked in the background.
+The `BackgroundService` domain service (and its various supertypes), and also the companion xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService2`] SPI service, enable commands to be persisted such that they may be invoked in the background.
 
-The `BackgroundService2` is responsible for capturing a memento representing the command in a typesafe way, and persisting it rather than executing it directly.
+The `BackgroundService` is responsible for capturing a memento representing the command in a typesafe way, and persisting it rather than executing it directly.
 
 The default `BackgroundServiceDefault` implementation works by using a proxy wrapper around the target so that it can capture the action to invoke and its arguments.
 
@@ -27,7 +27,7 @@ The API is:
 
 [source,java]
 ----
-public interface BackgroundService2 {
+public interface BackgroundService {
     <T> T execute(final T object);                              // <1>
     <T> T executeMixin(Class<T> mixinClass, Object mixedIn);    // <2>
 }
@@ -37,7 +37,7 @@ public interface BackgroundService2 {
 
 The default implementation is provided by core (`o.a.i.core.runtime.services.background.BackgroundServiceDefault`).
 
-To provide an alternative implementation, subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To provide an alternative implementation, subclass and link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] or equivalent (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == Usage
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc
index d65fa07..223f401 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc
@@ -6,37 +6,39 @@ include::_attributes.adoc[]
 
 
 
-The `CommandContext` service is a xref:refguide:applib-ant:RequestScoped.adoc[request-scoped] service that reifies the invocation of an action on a domain object into an object itself. This reified information is encapsulated within the `Command` object.
+The `CommandContext` service is a xref:refguide:applib-ant:RequestScoped.adoc[request-scoped] service that reifies the invocation of an action on a domain object into an object itself.
+This reified information is encapsulated within the `Command` object.
 
 By default, the `Command` is held in-memory only; once the action invocation has completed, the `Command` object is gone.
 The optional supporting xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`] enables the implementation of `Command` to be pluggable.
-With an appropriate implementation (eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command module's xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`]) the `Command` may then be persisted.
+With an appropriate implementation
+// TODO: v2: update for extensions (eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command module's xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`])
+the `Command` may then be persisted.
 
-The primary use case for persistent ``Command``s is in support of background commands; they act as a parent to any background commands that can be persisted either explicitly using the xref:refguide:applib-svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], or implicitly by way of the xref:refguide:applib-ant:Action.adoc#command[`@Action#command()`] annotation.
-
-There are a number of related use cases:
+There are a number of use cases:
 
 * to enable profiling of the running application (which actions are invoked then most often, what is their response time)
 * if a xref:refguide:applib-svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`] is configured, they provide better traceability as the `Command` is also correlated with any published events, again through the unique `transactionId` GUID
-* if a xref:refguide:applib-svc:spi/AuderService.adoc[`AuditerService`] is configured, they provide better audit information, since the `Command` (the 'cause' of an action) can be correlated to the audit records (the "effect" of the action) through the `transactionId` GUID
-
-However, while persistent ``Command``s _can_ be used for these use cases, it is recommended instead to use the xref:refguide:applib-svc:application-layer-api/InteractionContext.adoc[`InteractionContext`] service and persistent implementations of the ``Interaction`` object, eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module.
-
-
+* if a xref:refguide:applib-svc:spi/AuditerService.adoc[`AuditerService`] is configured, they provide better audit information, since the `Command` (the 'cause' of an action) can be correlated to the audit records (the "effect" of the action) through the `transactionId` GUID
+* to allow ``Command``s to be replicated and replayed to another system (usually for testing or dual-running/migration purposes).
 
+In general, though, However, while persistent ``Command``s _can_ be used for these use cases, it is recommended instead to use the xref:refguide:applib-svc:application-layer-api/InteractionContext.adoc[`InteractionContext`] service and persistent implementations of the ``Interaction`` object, eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module.
 
 
-== Screencast
 
 
-The link:https://www.youtube.com/watch?v=tqXUZkPB3EI[screencast] provides a run-through of the command (profiling) service, auditing service, publishing service (note: auditing service has since been replaced by `AuditerService`, and publishing service by `PublisherService`).
-It also shows how commands can be run in the background either explicitly by scheduling through the background service or implicitly by way of a framework annotation.
 
-
-[NOTE]
-====
-Note that this screencast shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
-====
+//== Screencast
+//
+//
+//The link:https://www.youtube.com/watch?v=tqXUZkPB3EI[screencast] provides a run-through of the command (profiling) service, auditing service, publishing service (note: auditing service has since been replaced by `AuditerService`, and publishing service by `PublisherService`).
+//It also shows how commands can be run in the background either explicitly by scheduling through the background service or implicitly by way of a framework annotation.
+//
+//
+//[NOTE]
+//====
+//Note that this screencast shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
+//====
 
 
 
@@ -54,10 +56,10 @@ public class CommandContext {
 }
 ----
 
-This class (`o.a.i.applib.services.CommandContext`) is also the default implementation.
+This class (`o.a.i.applib.services.command.CommandContext`) is also the default implementation.
 
 Under normal circumstances there shouldn't be any need to replace this implementation with another.
-But if you do need to for some reason, then subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+But if you do need to for some reason, then subclass and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 The `Command` type referenced above is in fact an interface, defined as:
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc
index 248fb3a..23bcf22 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc
@@ -19,8 +19,8 @@ xref:refguide:applib-ant:Action.adoc#invokeOn[`@Action#invokeOn()`]), then this
 per selected object (not one `Interaction` with multiple top-level ``Execution``s).
 
 
-It is possible for ``Interaction.Execution``s to be persisted; this is supported by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module, for example.  Persistent
-``Interaction``s support several use cases:
+It is possible for ``Interaction.Execution``s to be persisted; this is supported by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module, for example.
+Persistent``Interaction``s support several use cases:
 
 * they enable profiling of the running application (which actions are invoked then most often, what is their response
 time)
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc
index debb975..0fbd3c5 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc
@@ -61,5 +61,5 @@ public Order addItem(Product product, @ParameterLayout(named="Quantity") int qua
 
 The core framework provides a default implementation of this service, `o.a.i.core.runtime.services.message.MessageServiceDefault`.
 
-To use an alternative implementation, implement the `MessageService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `MessageService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc
index eff1080..65fdc19 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc
@@ -43,5 +43,5 @@ Any domain objects that were created in the "previous" session are no longer usa
 The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.xactn.SessionManagementServiceDefault`).
 
 
-To use an alternative implementation, implement the `SessionManagementService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `SessionManagementService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc
index 0354ebb..803625b 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc
@@ -2,6 +2,7 @@
 :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:
+:page-role: -toc -title
 
 
 Domain service SPIs influence how the framework handles application layer concerns, for example which home page to render to the end-user.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc
index b4492f5..c1678d4 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 Bootstrapping SPIs influence how the framework locates the components that make up the running application.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
index 1480007..05fb876 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
@@ -41,7 +41,7 @@ This implementation is also used to discover domain services annotated with xref
 Currently this logic uses the implementation directly, so is not pluggable.
 ====
 
-To use an alternative implementation, implement the `ClassDiscoveryService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `ClassDiscoveryService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc
index f603094..385c596 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 The core/domain APIs provide general-purpose services to the domain objects, for example obtaining the current time or user, or instantiating domain objects.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc
index 17fdf50..c3a1ad5 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc
@@ -48,7 +48,7 @@ This should be done in their xref:refguide:applib-ant:PostConstruct.adoc[`@PostC
 
 
 
-To use an alternative implementation, implement the `EventBusService` domain service and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `EventBusService` domain service and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
@@ -85,7 +85,7 @@ public class MySubscribingDomainService {
 <1> subscribers are typically not visible in the UI, so specify a `DOMAIN` nature
 <2> It's important that subscribers register before any domain services that might emit events on the event bus service.
 For example, the xref:secman:ROOT:about.adoc[SecMan extension] provides a domain service that automatically seeds certain domain entities; these will generate xref:refguide:applib-cm:classes/lifecycleevent.adoc[lifecycle events] and so any subscribers must be registered before such seed services.
-The easiest way to do this is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
+The easiest way to do this is to use the link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
 <3> register with the event bus service during xref:refguide:applib-ant:PostConstruct.adoc[`@PostConstruct`]
     initialization
 <4> corresponding deregister when shutting down
@@ -93,11 +93,6 @@ The easiest way to do this is to use the xref:refguide:applib-ant:DomainServiceL
 This works for both singleton (application-scoped) and also xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`] domain services.
 
 
-[TIP]
-====
-The xref:refguide:applib-cm:classes/super.adoc#AbstractSubscriber[`AbstractSubscriber`] class automatically performs this registration.
-As a convenience, it is also annotated with the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
-====
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc
index 8311a72..8299541 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc
@@ -32,7 +32,7 @@ This class (`o.a.i.applib.services.scratchpad.Scratchpad`) is also the implement
 And, as you can see, the service is just a request-scoped wrapper around a `java.util.Map`.
 
 
-To use an alternative implementation, subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, subclass and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc
index 4fec24e..e948830 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 The integration APIs provide functionality to the domain objects to integrate with other bounded contexts, for example sending an email or serializing an object out to XML.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc
index 2023d9e..083423f 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc
@@ -57,7 +57,7 @@ public interface BookmarkService {
 
 The core framework provides a default implementation of this API, namely `o.a.i.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault`
 
-To use an alternative implementation, implement `BookmarkService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `BookmarkService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc
index 699c117..ef95e38 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc
@@ -43,7 +43,7 @@ a persistent entity).  The enum indicates whether these schemas should be includ
 
 Apache Isis provides a default implementation of the service, `o.a.i.applib.services.jaxb.JaxbServiceDefault`.
 
-To use an alternative implementation, implement `JaxbService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `JaxbService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc
index 5a915ec..e3c1ace 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc
@@ -53,7 +53,7 @@ In fact, the `MementoServiceDefault` implementation does provide a mechanism to
 not part of the `MementoService` public API. Note also that the encoding method is not pluggable.
 ====
 
-To use an alternative implementation, implement `MementoService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `MementoService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 The types of objects that are supported by the `MementoService` are implementation-specific, but would typically
 include all the usual value types as well as Apache Isis' `Bookmark` class (to represent references to arbitrary
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc
index e394556..c71ea9f 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 The metadata APIs provide access to the framework's internal metamodel.  These are generally of use to support development-time activities, for example creating custom UIs through Swagger.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc
index 6cee850..3936318 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 
 The persistence layer APIs provide domain objects with tools to manage the interactions with the persistence layer, for example adding on-the-fly caching to queries that are called many times within a loop.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc
index c76d97e..1293116 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc
@@ -57,7 +57,7 @@ public class QueryResultsCache {
 
 This class (`o.a.i.applib.services.queryresultscache.QueryResultsCache`) is also the implementation.
 
-To use an alternative implementation, subclass `QueryResultsCache` and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, subclass `QueryResultsCache` and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc
index 2c6918c..9790204 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 
 The persistence layer SPIs influence how the framework persists domain objects, for example controlling how to create an audit log of changes to domain objects.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc
index 077f908..90f8d70 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 
 Domain service APIs for the presentation layer allow the domain objects to control aspects of the user interface.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
index ac5aeae..b8874c9 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
@@ -19,25 +19,19 @@ The API defined by the service is:
 
 [source,java]
 ----
-@DomainService(nature = NatureOfService.DOMAIN)
-@RequestScoped                                      // <1>
-public interface AcceptHeaderService {
-    @Programmatic
-    List<MediaType> getAcceptableMediaTypes();      // <2>
-}
+include::example$services/acceptheader/AcceptHeaderService.java[tags=refguide]
 ----
-<1> is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`], so this domain service instance is scoped to a particular request and is then destroyed
-<2> returns the list of media types found in the HTTP Accept header.
+<1> returns the list of media types found in the HTTP Accept header.
 
-
-The default implementation is provided by `o.a.i.v.ro.rendering.service.acceptheader.AcceptHeaderServiceForRest`.
+The default implementation is provided by `o.a.i.v.ro.rendering.service.acceptheader.AcceptHeaderServiceForRest`, and is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`].
 
 [NOTE]
 ====
 Note that the service will only return a list when the request is initiated through the xref:vro:ROOT:about.adoc[Restful Objects viewer].  Otherwise the service will return `null`.
 ====
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
+
 
 
 == Usage
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
index 93f7686..2674cd2 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
@@ -36,7 +36,7 @@ public interface GuiceBeanProvider {
 
 The xref:vw:ROOT:about.adoc[Wicket viewer] this provides a default implementation of this service.
 
-To use an alternative implementation, implement the `GuideBeanProvider` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `GuideBeanProvider` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc
index fafed36..ce06b74 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 
 Domain service SPIs for the presentation layer influence how the Apache Isis viewers behave.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc
index 994731b..efc35de 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc
@@ -13,10 +13,8 @@ See xref:runtime-services:ROOT:presentation-layer/ContentNegotiationService.adoc
 
 [NOTE]
 ====
-Unlike most other domain services, the framework (that is, `ContentNegotiationService`) will check _all_ available
-implementations of `ContentMappingService` to convert the domain object to the requested media type, rather than merely
-the first implementation found; in other words it uses the chain-of-responsibility pattern.  Services are checked
-in the ordering defined by xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).
+Unlike most other domain services, the framework (that is, `ContentNegotiationService`) will check _all_ available implementations of `ContentMappingService` to convert the domain object to the requested media type, rather than merely the first implementation found; in other words it uses the chain-of-responsibility pattern.
+Services are checked in the ordering defined by the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
 The mapped object used will be the first non-`null` result returned by an implementation.
 ====
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc
index 4f5bd29..bad3713 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc
@@ -15,13 +15,10 @@ The framework provides a single such grid implementation, namely for Bootstrap3.
 
 [NOTE]
 ====
-Unlike most other domain services, the framework will check _all_ available implementations of `GridSystemService` to
-obtain available grid systems, rather than merely the first implementation found; in other words it uses the
-chain-of-responsibility pattern.  Services are called in the order defined by
-xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).
+Unlike most other domain services, the framework will check _all_ available implementations of `GridSystemService` to obtain available grid systems, rather than merely the first implementation found; in other words it uses the chain-of-responsibility pattern.
+Services are called in the order defined by the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation).
 
-Note though that each concrete implementation must also provide corresponding Wicket viewer components capable of
-interpreting the grid layout.
+Note though that each concrete implementation must also provide corresponding Wicket viewer components capable of interpreting the grid layout.
 ====
 
 
@@ -41,8 +38,9 @@ public interface GridSystemService<G extends Grid> {
     void minimal(G grid, Class<?> domainClass);                 // <7>
 }
 ----
-<1> The concrete subclass of `Grid` supported by this implementation. As noted in the introduction, there can be multiple implementations of this service,  but there can only be one implementation per concrete subclass.  As is normal practice,
-the service with the lowest xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] takes precedence.
+<1> The concrete subclass of `Grid` supported by this implementation.
+As noted in the introduction, there can be multiple implementations of this service,  but there can only be one implementation per concrete subclass.
+As is normal practice, these are ordered as per the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] or equivalent annotation.
 <2> the target namespace for this grid system.  This is used when generating the XML.  The Bootstrap3 grid system provided by the framework returns the value `http://isis.apache.org/applib/layout/grid/bootstrap3`.
 <3> the schema location for the XSD.  The Bootstrap3 grid system provided by the framework returns the value `http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd`.
 <4> a default grid, eg two columns in ratio 4:8.  Used when no existing grid layout exists for a domain class.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc
index 4a5eab7..614a1be 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc
@@ -42,7 +42,7 @@ per the xref:refguide:applib-svc:integration-api/BookmarkService.adoc[`BookmarkS
 
 The core framework provides a default implementation of this service (`org.apache.isis.viewer.wicket.viewer.services.HintStoreUsingWicketSession`).
 
-To use an alternative implementation, implement the `HintStore` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `HintStore` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == View models
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc
index aa9acf9..821707e 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc
@@ -25,11 +25,9 @@ Currently the routing service is used only by the xref:vw:ROOT:about.adoc[Wicket
 
 [NOTE]
 ====
-Unlike most other domain services, the framework will check _all_ available implementations of
-`RoutingService` to return a route, rather than the first implementation found; in other words it uses the
-chain-of-responsibility pattern.  Services are called in the order defined by
-xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).  The route used will be the
-result of the first implementation checked that declares that it can provide a route.
+Unlike most other domain services, the framework will check _all_ available implementations of `RoutingService` to return a route, rather than the first implementation found; in other words it uses the chain-of-responsibility pattern.
+Services are called in the order defined by the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (or equivalent).
+The route used will be the result of the first implementation checked that declares that it can provide a route.
 ====
 
 
@@ -58,7 +56,7 @@ The framework provides a default implementation - `RoutingServiceDefault` - whic
 It uses the xref:refguide:applib-svc:application-layer-spi/HomePageProviderService.adoc[`HomePageProviderService`].
 
 There can be multiple implementations of `RoutingService` registered.
-These are checked in turn (chain of responsibility pattern), ordered according to xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+These are checked in turn (chain of responsibility pattern), ordered according to the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation or equivalent (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 The route from the first service that returns `true` from its `canRoute(...)` method will be used.
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
index 18976c2..4a27d1b 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
@@ -29,7 +29,7 @@ public interface TableColumnOrderService {
 <1> for the parent collection owned by the specified parent and collection Id, return the set of property ids in the same or other order.
 <2> for the standalone collection of the specified type, return the set of property ids in the same or other order, else return `null` if provides no reordering.
 
-There can be multiple implementations of `TableColumnOrderService` registered, ordered as per xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`].
+There can be multiple implementations of `TableColumnOrderService` registered, ordered as per the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (or equivalent).
 The ordering provided by the first such service that returns a non-`null` value will be used.
 If all provided implementations return `null`, then the framework will fallback to a default implementation.
 
@@ -40,7 +40,7 @@ If all provided implementations return `null`, then the framework will fallback
 The framework provides a fallback implementation of this service, namely `TableColumnOrderService.Default`.
 
 There can be multiple implementations of `TableColumnOrderService registered.
-These are checked in turn (chain of responsibility pattern), ordered according to xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+These are checked in turn (chain of responsibility pattern), ordered according to the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`Order`] annotation, or equivalent (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 The order from the first service that returns a non null value will be used.
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc
index 8178c61..c567437 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc
@@ -46,5 +46,5 @@ The framework provides a default implementation -- `UrlEncodingServiceWithCompre
 As already noted, be aware that the maximum length of a URL should not exceed 2083 characters.
 For large view models, there's the possibility that this limit could be exceeded; in such cases register an alternative implementation of this service.
 
-To use an alternative implementation, implement the `UrlEncodingService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `UrlEncodingService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc
index 260d28e..4e15f74 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc
@@ -2,7 +2,7 @@
 :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:
-
+:page-role: -toc -title
 
 
 The testing APIs provide functionality to domain objects for use when testing or demoing an application.
diff --git a/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc b/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc
index d816f60..595e922 100644
--- a/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc
@@ -33,8 +33,6 @@
 
 
 ** xref:refguide:applib-svc:application-layer-api.adoc[Application Layer API]
-*** xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[ActionInvocationContext]
-
 *** xref:refguide:applib-svc:application-layer-api/BackgroundService.adoc[BackgroundService]
 **** xref:refguide:applib-svc:application-layer-api/BackgroundService/BackgroundCommandExecution.adoc[BackgroundCommandExecution]
 **** xref:refguide:applib-svc:application-layer-api/BackgroundService/Quartz.adoc[Quartz]
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
index a62cf10..201061f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
@@ -23,6 +23,7 @@ import org.springframework.core.Ordered;
 
 import lombok.experimental.UtilityClass;
 
+// tag::refguide[]
 @UtilityClass
 public class OrderPrecedence {
 
@@ -55,4 +56,5 @@ public class OrderPrecedence {
      */
     public static final int LOW = OrderPrecedence.LOWEST / 2;
 
-}
\ No newline at end of file
+}
+// end::refguide[]
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
index 95cdf54..c1e116a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.command;
 
+import lombok.Getter;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Named;
 
@@ -43,12 +45,9 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 @Qualifier("Default")
 public class CommandContext {
 
+    @Getter
     private Command command;
 
-    public Command getCommand() {
-        return command;
-    }
-
     /**
      * <b>NOT API</b>: intended to be called only by the framework.
      */
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java
index 080e91e..3fc3f80 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java
@@ -26,8 +26,12 @@ import org.apache.isis.applib.services.command.Command;
 public interface CommandService {
 
     /**
-     * Simply instantiate the appropriate instance of the {@link Command}.  Its members will be populated automatically
-     * by the framework (the {@link Command}'s {@link Command#getTimestamp()}, {@link Command#getUser()} and {@link Command#getUniqueId()}).
+     * Simply instantiate the appropriate instance of the {@link Command}.
+     *
+     * <p>
+     * Its members will be populated automatically by the framework (the {@link Command}'s
+     * {@link Command#getTimestamp()}, {@link Command#getUser()} and {@link Command#getUniqueId()}).
+     * </p>
      */
     Command create();
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
index 99e9444..52687c2 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.iactn;
 
+import lombok.Getter;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Named;
 
@@ -44,15 +46,11 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 @RequestScoped
 public class InteractionContext {
 
-    private Interaction interaction;
-
     /**
-     * Returns the currently active {@link Interaction} for this thread.
-     * @return
+     * The currently active {@link Interaction} for this thread.
      */
-    public Interaction getInteraction() {
-        return interaction;
-    }
+    @Getter                                 // <1>
+    private Interaction interaction;
 
     /**
      * <b>NOT API</b>: intended to be called only by the framework.
@@ -60,5 +58,4 @@ public class InteractionContext {
     public void setInteraction(final Interaction interaction) {
         this.interaction = interaction;
     }
-
 }
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc
index 9c6133e..87d6b82 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc
@@ -1,7 +1,7 @@
 = Application Layer
 :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 -title
 
 
 These domain services are internal to the framework, controlling various aspects of the application layer.
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc
index 3aa2df6..c183808 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc
@@ -1,7 +1,7 @@
 = Persistence Layer internal SPI
 :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 -title
 
 
 These domain services are internal to the framework, controlling various aspects of the persistence layer.
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc
index 457ddee..60e8f5a 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc
@@ -39,7 +39,7 @@ The service implementation is `o.a.i.c.m.s.publishing.PublishingServiceInternal`
 
 Apache Isis' default implementation of `PublishingServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == Related Classes
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc
index 7367181..9e6fba0 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc
@@ -1,7 +1,7 @@
 = Presentation Layer
 :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 -title
 
 
 These domain services are internal to the framework, controlling various aspects of the presentation layer.
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
index a8d085b..ab238e3 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
@@ -193,7 +193,7 @@ If the property is not set, then the default depends on the xref:refguide:config
 
 Apache Isis' default implementations of `ContentNegotiationService` service are automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc
index b8e7b16..7d0ae27 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc
@@ -79,7 +79,7 @@ ie `MemberReprMode`
 As discussed in the introduction, the framework provides a default implementation, `o.a.i.v.ro.rendering.service.RepresentationServiceContentNegotiator`.
 This delegates to xref:core:runtime-services:presentation-layer/ContentNegotiationService.adoc[`ContentNegotiationService`] to generate an alternative representation; but if none is provided then it falls back on generating the representations as defined in the link:http://restfulobjects.org[Restful Objects spec] v1.0.
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == Registering the Services
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java
index 7f5793a..fd95d1a 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java
@@ -24,8 +24,7 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.codegen.bytebuddy.IsisModuleCodegenByteBuddy;
 import org.apache.isis.runtime.IsisModuleRuntime;
 import org.apache.isis.runtime.services.auth.AuthenticationSessionProviderDefault;
-import org.apache.isis.security.api.authorization.manager.AuthorizationManager;
-import org.apache.isis.runtime.services.background.CommandExecutorServiceDefault;
+import org.apache.isis.runtime.services.command.CommandExecutorServiceDefault;
 import org.apache.isis.runtime.services.bookmarks.BookmarkServiceInternalDefault;
 import org.apache.isis.runtime.services.command.CommandDtoServiceInternalDefault;
 import org.apache.isis.runtime.services.command.CommandServiceDefault;
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandExecutorServiceDefault.java
similarity index 99%
rename from core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
rename to core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandExecutorServiceDefault.java
index 9c946df..fd6bd6d 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandExecutorServiceDefault.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.runtime.services.background;
+package org.apache.isis.runtime.services.command;
 
 import java.sql.Timestamp;
 import java.util.Collections;
diff --git a/migration-notes.adoc b/migration-notes.adoc
index 16926c0..7749e4c 100644
--- a/migration-notes.adoc
+++ b/migration-notes.adoc
@@ -8,6 +8,7 @@ Search also for: "TODO: v2: " in the .adoc documentation.
 
 * `o.a.isis.schema.utils.Xxx` in the applib have moved to `o.a.isis.applib.util.schema`
 * `o.a.isis.schema.utils.jaxbadapters.Xxx` in the applib have moved to `o.a.isis.applib.jaxbadapters`
+* `BackgroundService` replaced by the `WrapperFactory#async(Object)`
 
 
 === Server-Sent-Event (SSE) Support (ISIS-2102)
diff --git a/preview.sh b/preview.sh
index d8c6433..a9214c9 100644
--- a/preview.sh
+++ b/preview.sh
@@ -12,6 +12,7 @@ fi
 
 echo "building ..."
 export ANTORA_CMD=antora
+export CHECK_FOR_STALE_EXAMPLES=skip
 
 echo "\$PLAYBOOK_FILE = $PLAYBOOK_FILE"
 sh build-site.sh $PLAYBOOK_FILE || exit 1
diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index b95b97d..2b4c3eb 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -13,12 +13,14 @@ bash $SCRIPT_DIR/_adoc-copy-examples.sh
 bash $SCRIPT_DIR/_adoc-gen-config.sh
 
 
-# check if anything had not been sync'd
-WC=$(git status --porcelain | wc -l)
-if [ "$WC" -ne "0" ]; then
-  git status --porcelain
-  echo "Some examples are out of date; run sync-adoc.sh and commit, then try again" >&2
-  exit 1
+# check if any examples have not been sync'd
+if [ "$CHECK_FOR_STALE_EXAMPLES" != "skip" ]; then
+  WC=$(git status --porcelain | grep examples | wc -l)
+  if [ "$WC" -ne "0" ]; then
+    git status --porcelain
+    echo "Some examples are out of date; run sync-adoc.sh and commit, then try again" >&2
+    exit 1
+  fi
 fi
 
 bash $SCRIPT_DIR/_adoc-antora.sh ${PROJECT_ROOT_PATH}/$*


[isis] 15/25: ISIS-2062: more messing about with scripts

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 b9c692d586a4e09e670433d4b7b3f729179fbb7a
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 13 18:43:08 2019 +0000

    ISIS-2062: more messing about with scripts
---
 scripts/ci/build-site.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index 8ffb9f1..b95b97d 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -3,7 +3,7 @@ set -e
 
 SCRIPT_DIR=$( dirname "$0" )
 if [ -z "$PROJECT_ROOT_PATH" ]; then
-  PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
+  export PROJECT_ROOT_PATH=`cd $SCRIPT_DIR/../.. ; pwd`
 fi