fixes up references to view models and mixins.

Also moves remaining decoupling material from ugbtb elsewhere


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/29d19fff
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/29d19fff
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/29d19fff

Branch: refs/heads/wip
Commit: 29d19fff4f9f6f2c242f80d4a4733a766fa37134
Parents: 3ce607a
Author: Dan Haywood <d...@haywood-associates.co.uk>
Authored: Wed Apr 19 19:45:06 2017 +0100
Committer: Dan Haywood <d...@haywood-associates.co.uk>
Committed: Thu Apr 20 09:09:31 2017 +0100

----------------------------------------------------------------------
 .../guides/dg/_dg_working-with-many-repos.adoc  |   2 +-
 ...gant-DomainObjectLayout_cssClassUiEvent.adoc |   4 +-
 .../_rgant-DomainObjectLayout_iconUiEvent.adoc  |   4 +-
 .../_rgant-DomainObjectLayout_titleUiEvent.adoc |   4 +-
 .../rgant/_rgant-DomainObject_nature.adoc       |   2 +-
 .../asciidoc/guides/rgant/_rgant-Mixin.adoc     |   2 +-
 .../guides/rgant/_rgant-PostConstruct.adoc      |   2 +-
 .../guides/rgant/_rgant-XmlJavaTypeAdapter.adoc |   2 +-
 .../guides/rgant/_rgant-XmlRootElement.adoc     |   6 +-
 .../guides/rgcfg/_rgcfg_configuring-core.adoc   |   2 +-
 .../guides/rgcms/_rgcms_classes_mixins.adoc     |   8 +-
 .../guides/rgcms/_rgcms_classes_mixins_Dto.adoc |   3 +-
 .../rgcms/_rgcms_methods_prefixes_disable.adoc  |   2 +-
 .../rgcms/_rgcms_methods_prefixes_hide.adoc     |   2 +-
 .../_rgfis_spi_ContentNegotiationService.adoc   |   2 +-
 .../main/asciidoc/guides/rgmvn/_rgmvn_xsd.adoc  |   4 +-
 .../guides/rgsvc/_rgsvc_api_JaxbService.adoc    |   2 +-
 .../guides/rgsvc/_rgsvc_api_MementoService.adoc |   4 +-
 .../guides/rgsvc/_rgsvc_api_Scratchpad.adoc     |   2 +-
 .../guides/rgsvc/_rgsvc_api_SwaggerService.adoc |   2 +-
 .../guides/rgsvc/_rgsvc_spi_AuditerService.adoc |   2 +-
 .../rgsvc/_rgsvc_spi_AuditingService.adoc       |   2 +-
 .../_rgsvc_spi_BackgroundCommandService.adoc    |   2 +-
 .../guides/rgsvc/_rgsvc_spi_CommandService.adoc |   2 +-
 .../rgsvc/_rgsvc_spi_PublisherService.adoc      |   2 +-
 .../rgsvc/_rgsvc_spi_PublishingService.adoc     |   2 +-
 .../rgsvc/_rgsvc_spi_TranslationService.adoc    |   2 +-
 .../rgsvc/_rgsvc_spi_UrlEncodingService.adoc    |   2 +-
 .../guides/ugbtb/_ugbtb_decoupling.adoc         |  30 ----
 .../_ugbtb_decoupling_contributed-members.adoc  |   9 --
 .../ugbtb/_ugbtb_decoupling_contributions.adoc  |   8 -
 .../ugbtb/_ugbtb_decoupling_db-schemas.adoc     | 141 ------------------
 .../ugbtb/_ugbtb_decoupling_event-bus.adoc      |  11 --
 .../guides/ugbtb/_ugbtb_decoupling_mixins.adoc  |   8 -
 .../_ugbtb_decoupling_pushing-changes.adoc      | 140 ------------------
 .../_ugbtb_decoupling_vetoing-visibility.adoc   |  15 --
 .../guides/ugbtb/_ugbtb_hints-and-tips.adoc     |   2 +
 .../_ugbtb_hints-and-tips_are-you-sure.adoc     |   8 +-
 .../_ugbtb_hints-and-tips_pushing-changes.adoc  | 140 ++++++++++++++++++
 ...ugbtb_hints-and-tips_vetoing-visibility.adoc |  15 ++
 .../action-semantics-are-you-sure.png           | Bin 0 -> 11046 bytes
 .../hints-and-tips/are-you-sure-happy-case.png  | Bin 0 -> 9993 bytes
 .../hints-and-tips/are-you-sure-sad-case.png    | Bin 0 -> 10515 bytes
 .../images/hints-and-tips/are-you-sure.png      | Bin 0 -> 9312 bytes
 .../src/main/asciidoc/guides/ugbtb/ugbtb.adoc   |   1 -
 ...un_building-blocks_events_domain-events.adoc |   2 +-
 ...cks_types-of-domain-objects_view-models.adoc |   2 +-
 ...ugfun_core-concepts_apache-isis-vs_cqrs.adoc |   4 +-
 .../_ugfun_core-concepts_philosophy_aop.adoc    |   2 +-
 ...ing-model_domain-services_contributions.adoc |   2 +-
 ...ugfun_programming-model_view-models_dto.adoc |  12 +-
 ...amming-model_view-models_dto_versioning.adoc |   2 +-
 .../guides/ugodn/_ugodn_db-schemas.adoc         | 147 +++++++++++++++++++
 ...nts-and-tips_overriding-jdo-annotations.adoc |   2 +-
 .../src/main/asciidoc/guides/ugodn/ugodn.adoc   |   1 +
 .../ugvw/_ugvw_layout_application-menu.adoc     |   2 +-
 .../powered-by/_powered-by_contactapp.adoc      |   2 +-
 .../_powered-by_gesconsultor-grc.adoc           |   2 +-
 .../asciidoc/pages/screencasts/screencasts.adoc |  16 +-
 59 files changed, 374 insertions(+), 429 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/dg/_dg_working-with-many-repos.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/dg/_dg_working-with-many-repos.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/dg/_dg_working-with-many-repos.adoc
index 086f329..1e39537 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/dg/_dg_working-with-many-repos.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/dg/_dg_working-with-many-repos.adoc
@@ -8,7 +8,7 @@
 
 Applications built with Apache Isis often (should) consist of multiple 
modules, each in separate git repositories.  For example, there are the various 
(non-ASF) link:http://isisaddons.org[Isis Addons] that provide various 
cross-cutting concerns/technical services (security, mail-merge etc), as well 
the modules eg as provided by the (non-ASF) 
link:http://catalog.incode.org[Incode Catalog], which provides generic business 
subdomains (communication channels, documents etc).
 
-In addition, your own application may well be structured as a number of 
distinct modules (probably with the entities in each module being mapped to a 
different schema), and using such techniques as the 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_event-bus[event bus] and 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixins] so that these modules 
are decoupled from each other.
+In addition, your own application may well be structured as a number of 
distinct modules (probably with the entities in each module being mapped to a 
different schema), and using such techniques as the 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_events_domain-events[event bus] 
and 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 so that these modules are decoupled from each other.
 
 All of which is a preamble to say that you will likely have multiple 
directories on your local development computer, for each such git repository 
that you contribute to.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
index 8b948aa..de5d393 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_cssClassUiEvent.adoc
@@ -17,8 +17,8 @@ the domain object using the event's API.
 [NOTE]
 ====
 The feature was originally introduced so that 
xref:../rgant/rgant.adoc#_rgant-XmlRootElement[`@XmlRootElement`]-annotated
-xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model]s could be kept as 
minimal as possible, just defining the data.
-UI events allow subscribers to provide UI hints, while 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixin]s can be used to 
provide the behaviour.
+xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model]s could be kept as minimal as possible, just defining the data.
+UI events allow subscribers to provide UI hints, while 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixin]s
 can be used to provide the behaviour.
 ====
 
 By default the event raised is `CssClassUiEvent.Default`. For example:

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_iconUiEvent.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_iconUiEvent.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_iconUiEvent.adoc
index 21d5f81..418ed07 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_iconUiEvent.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_iconUiEvent.adoc
@@ -18,8 +18,8 @@ the domain object using the event's API.
 [NOTE]
 ====
 The feature was originally introduced so that 
xref:../rgant/rgant.adoc#_rgant-XmlRootElement[`@XmlRootElement`]-annotated
-xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model]s could be kept as 
minimal as possible, just defining the data.
-UI events allow subscribers to provide UI hints, while 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixin]s can be used to 
provide the behaviour.
+xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model]s could be kept as minimal as possible, just defining the data.
+UI events allow subscribers to provide UI hints, while 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixin]s
 can be used to provide the behaviour.
 ====
 
 By default the event raised is `IconUiEvent.Default`. For example:

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
index aa1fb75..12f13f7 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObjectLayout_titleUiEvent.adoc
@@ -17,8 +17,8 @@ the domain object using the event's API.
 [NOTE]
 ====
 The feature was originally introduced so that 
xref:../rgant/rgant.adoc#_rgant-XmlRootElement[`@XmlRootElement`]-annotated
-xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model]s could be kept as 
minimal as possible, just defining the data.
-UI events allow subscribers to provide UI hints, while 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixin]s can be used to 
provide the behaviour.
+xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model]s could be kept as minimal as possible, just defining the data.
+UI events allow subscribers to provide UI hints, while 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixin]s
 can be used to provide the behaviour.
 ====
 
 By default the event raised is `TitleUiEvent.Default`. For example:

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_nature.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_nature.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_nature.adoc
index 097e71b..6b2e107 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_nature.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-DomainObject_nature.adoc
@@ -44,7 +44,7 @@ The identity of an inmemory entity is determined solely by 
the state of entity's
 +
 indicates that the domain object is part of the domain layer, and is 
contributing behaviour to objects of some other type as a mixin (also known as 
a trait).
 
-Equivalent to annotating with xref:../rgant/rgant.adoc#_rgant-Mixin[`@Mixin`]. 
 For further discussion on using mixins, see 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixins] in the user guide.
+Equivalent to annotating with xref:../rgant/rgant.adoc#_rgant-Mixin[`@Mixin`]. 
 For further discussion on using mixins, see 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 in the user guide.
 
 
 * `VIEW_MODEL` +

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Mixin.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Mixin.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Mixin.adoc
index 03abb65..ecae971 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Mixin.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Mixin.adoc
@@ -11,7 +11,7 @@ The `@Mixin` annotation indicates that the class acts as a 
mixin, contributing b
 Mixins were originally introduced as a means of allowing contributions from 
one module to the types of another module; in such cases the mixin type is 
often an interface type (eg `DocumentHolder`) that might be implemented by 
numerous different concrete types.
 However, mixins are also a convenient mechanism for grouping functionality 
even for a concrete type.
 
-For further discussion on using mixins, see 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixins] in the user guide.
+For further discussion on using mixins, see 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 in the user guide.
 
 The table below summarizes the annotation's attributes.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PostConstruct.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PostConstruct.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PostConstruct.adoc
index 78d60f7..7b5cba3 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PostConstruct.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-PostConstruct.adoc
@@ -7,7 +7,7 @@
 
 The `@javax.annotation.PostConstruct` annotation, as defined in 
link:https://jcp.org/en/jsr/detail?id=250[JSR-250],  is recognized by Apache 
Isis as a callback method on domain services to be called just after they have 
been constructed, in order that they initialize themselves.
 
-It is also recognized for xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view 
models] (eg annotated with 
xref:../rgant/rgant.adoc#_rgant-ViewModel[`@ViewModel`]).
+It is also recognized for 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 models] (eg annotated with 
xref:../rgant/rgant.adoc#_rgant-ViewModel[`@ViewModel`]).
 
 For the default application-scoped (singleton) domain services, this means 
that the method, if present, is called during the bootstrapping of the 
application.  For 
xref:../rgant/rgant.adoc#_rgant-RequestScoped[`@RequestScoped`] domain 
services, the method is called at the beginning of the request.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlJavaTypeAdapter.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlJavaTypeAdapter.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlJavaTypeAdapter.adoc
index b24585c..48eb4e3 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlJavaTypeAdapter.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlJavaTypeAdapter.adoc
@@ -22,6 +22,6 @@ public class ToDoItem ...  {
 
 This annotation therefore allows view models/DTOs to have references to 
persistent entities; a common idiom.
 
-For a more complete discussion of writing JAXB view models/DTOs, see 
xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[this topic]
+For a more complete discussion of writing JAXB view models/DTOs, see 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[this
 topic]
 in the user guide.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlRootElement.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlRootElement.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlRootElement.adoc
index 220a1fe..51c290d 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlRootElement.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-XmlRootElement.adoc
@@ -6,7 +6,7 @@
 
 
 The `@XmlRootElement` annotation provides an alternative way to define a
-xref:rg.adoc#_ugbtb_view-models[view model], in particular one intended to act 
as a DTO for use within
+xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model], in particular one intended to act as a DTO for use within
 xref:../ugvro/ugvro.adoc#[RestfulObjects viewer], or which contains 
arbitrarily complex state.
 
 A view model is a non-persisted domain object whose state is converted to/from 
a string memento.  In the case of a
@@ -74,10 +74,10 @@ public class ToDoItemDto implements Dto {
 Although (like any other viewmodel) a JAXB-annotated can have behaviour 
(actions) and UI hints, you may wish to keep
 the DTO "clean", just focused on specifying the data contract.
 
-Behaviour can therefore be provided using 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixins] (annotated with
+Behaviour can therefore be provided using 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 (annotated with
 xref:../rgant/rgant.adoc#_rgant-Mixin[`@Mixin`]), while 
xref:../rgcms/rgcms.adoc#_rgcms_classes_uievent[UI events] can be used
 to obtain title, icons and so on.
 
-For a more complete discussion of writing JAXB view models/DTOs, see 
xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[this topic]
+For a more complete discussion of writing JAXB view models/DTOs, see 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[this
 topic]
 in the user guide.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
index 4535000..bacff5d 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgcfg/_rgcfg_configuring-core.adoc
@@ -547,7 +547,7 @@ This is by way of possibly deprecating and eventually 
moving contributed service
 | When searching for  
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_disable[`disableXxx()`] or 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_hide[`hideXxx()`] methods, 
whether to search only for the no-param version (or also for supporting methods 
that match the parameter types of the action). +
 
 If enabled then will not search for supporting methods with the exact set of 
arguments as the method it was supporting (and any supporting methods that have 
additional parameters will be treated as invalid).
-Note that this in effect means that 
xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins[mixins] must be used instead of 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_contributions[contributed services].
+Note that this in effect means that 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 must be used instead of 
xref:../ugfun/ugfun.adoc#_ugfun_programming-model_domain-services_contributions[contributed
 services].
 
 
 |`isis.reflector.validator.` +

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins.adoc
index 355759c..96480d9 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins.adoc
@@ -5,8 +5,12 @@
 :_imagesdir: images/
 
 
-The interfaces listed in this chapter are role interfaces; they define a 
contract for the framework
- to interact with those domain objects that implement these interfaces.
+This chapter defines a number of role interfaces that definea contract for 
some framework-defined mixins.
+
+[TIP]
+====
+See the 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[fundamentals
 user guide] for a discussion of mixins.
+====
 
 
 include::_rgcms_classes_mixins_Object.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
index 31e709e..48992e9 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_classes_mixins_Dto.adoc
@@ -7,8 +7,7 @@
 
 The `Dto` role interface is intended to be implemented by JAXB-annotated view 
models, that is, annotated using
 xref:../rgant/rgant.adoc#_rgant-XmlRootElement[`@XmlRootElement`].  It enables 
the ability to download the XML and
-XSD schema of those objects using two 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixins],
-`Dto_downloadXml` and `Dto_downloadXsd`.
+XSD schema of those objects using two 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins],
 `Dto_downloadXml` and `Dto_downloadXsd`.
 
 The interface is just a marker interface (with no members), and is defined as:
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_disable.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_disable.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_disable.adoc
index b4e4e86..e2bae19 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_disable.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_disable.adoc
@@ -89,6 +89,6 @@ public class Customer {
 In the case of actions, the framework will also search for supporting method 
that has the exact same parameter types as the action itself.
 Enabling `isis.reflector.validator.noParamsOnly` configuration property 
switches this off, so that the framework will only search for supporting method 
with no parameters.
 
-Note that enabling this configuration property in effect means that 
xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins[mixins] must be used instead of 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_contributions[contributed services] 
(because contributed actions are the one case where the value of a parameter to 
a supporting method may be non-null).
+Note that enabling this configuration property in effect means that 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 must be used instead of 
xref:../ugfun/ugfun.adoc#_ugfun_programming-model_domain-services_contributions[contributed
 services] (because contributed actions are the one case where the value of a 
parameter to a supporting method may be non-null).
 ====
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_hide.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_hide.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_hide.adoc
index 7c90d4b..94d12ca 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_hide.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgcms/_rgcms_methods_prefixes_hide.adoc
@@ -65,6 +65,6 @@ public class Customer {
 In the case of actions, the framework will also search for supporting method 
that has the exact same parameter types as the action itself.
 Enabling `isis.reflector.validator.noParamsOnly` configuration property 
switches this off, so that the framework will only search for supporting method 
with no parameters.
 
-Note that enabling this configuration property in effect means that 
xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins[mixins] must be used instead of 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_contributions[contributed services] 
(because contributed actions are the one case where the value of a parameter to 
a supporting method may be non-null).
+Note that enabling this configuration property in effect means that 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 must be used instead of 
xref:../ugfun/ugfun.adoc#_ugfun_programming-model_domain-services_contributions[contributed
 services] (because contributed actions are the one case where the value of a 
parameter to a supporting method may be non-null).
 ====
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_spi_ContentNegotiationService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_spi_ContentNegotiationService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_spi_ContentNegotiationService.adoc
index 6a6df6e..05c486e 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_spi_ContentNegotiationService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgfis/_rgfis_spi_ContentNegotiationService.adoc
@@ -14,7 +14,7 @@ Another use case is to support "third party" REST clients 
over which you have no
 
 Instead you need to create some sort of stable facade over your domain 
entities, one which you will preserve even if the domain entities change.  
There are three ways in which you can do this:
 
-* first is to solve the problem at the domain layer by defining a regular 
Apache Isis xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model].  This is 
then surfaced over the RO viewer.  +
+* first is to solve the problem at the domain layer by defining a regular 
Apache Isis 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model].  This is then surfaced over the RO viewer.  +
 +
 If the underlying entities change, then care must be taken to ensure that 
structure of the view model nevertheless is unchanged.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgmvn/_rgmvn_xsd.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgmvn/_rgmvn_xsd.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgmvn/_rgmvn_xsd.adoc
index 987fc6c..b2173c4 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgmvn/_rgmvn_xsd.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgmvn/_rgmvn_xsd.adoc
@@ -7,7 +7,7 @@
 
 
 The `xsd` goal of the `isis-maven-plugin` uses the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_JaxbService[`JaxbService`] to
-generate XSD schemas from any JAXB-annotated 
xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model/DTOs].
+generate XSD schemas from any JAXB-annotated 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model/DTOs].
 
 This is instead of and preferable to using the JAXB 
link:https://jaxb.java.net/2.2.4/docs/schemagen.html[schemagen]
 tool, because it uses the framework's support (via
@@ -18,7 +18,7 @@ The `xsd` goal defines the following properties:
 
 * `appManifest` - fully qualified class name for the app manifest used to 
bootstrap the application (see discussion above)
 
-* `jaxbClasses` - a list of 
xref:rg.adoc#_ugbtb_view-models_jaxb[JAXB-annotated view model] classes;
+* `jaxbClasses` - a list of 
xref:../ugfun/ugfun.adoc#_ugfun_programming-model_view-models_jaxb[JAXB-annotated
 view model] classes;
 
 * `output` - (optional) subdirectory under the `target` directory to generate 
the XSDs +
 +

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_JaxbService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_JaxbService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_JaxbService.adoc
index 1cc6cc1..faa0fb8 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_JaxbService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_JaxbService.adoc
@@ -50,7 +50,7 @@ Isis provides a default implementation of the service, 
`o.a.i.schema.services.ja
 
 This service is provided as a convenience for applications, but is also used 
internally by the framework to
 xref:../rgant/rgant.adoc#_rgant-XmlRootElement[`@XmlRootElement`]-annotated
-xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view models].  The functionality 
to download XML and XSD schemas is also
+xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 models].  The functionality to download XML and XSD schemas is also
 exposed in the UI through mixins to 
xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins_Dto[`Dto`] interface.
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_MementoService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_MementoService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_MementoService.adoc
index 11caf67..0d6a143 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_MementoService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_MementoService.adoc
@@ -7,8 +7,8 @@
 
 
 The `MementoService` was originally introduced to simplify the implementation 
of
-xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[ViewModel]s which are required by 
the framework to return string representation of
-all of their backing state, moreover which is safe for use within a URL.  This 
usage is deprecated; use xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models_jaxb[JAXB 
view models] instead.
+xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[ViewModel]s
 which are required by the framework to return string representation of
+all of their backing state, moreover which is safe for use within a URL.  This 
usage is deprecated; use 
xref:../ugfun/ugfun.adoc#_ugfun_programming-model_view-models_jaxb[JAXB view 
models] instead.
 
 The service can also be used to create a memento of arbitrary objects, however 
this usage is also deprecated.  (Prior
 to `1.13.0` it was used internally by the core implementation of

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_Scratchpad.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_Scratchpad.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_Scratchpad.adoc
index f513b20..c31d530 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_Scratchpad.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_Scratchpad.adoc
@@ -59,7 +59,7 @@ public BigDecimal totalCost() {
 Scratchpad scratchpad;
 ----
 
-A more complex example could use a 
xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model] to enable bulk updates 
to a set of objects. The view model's job is to gather track of the items to be 
updated:
+A more complex example could use a 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model] to enable bulk updates to a set of objects. The view model's job is to 
gather track of the items to be updated:
 
 [source,java]
 ----

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_SwaggerService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_SwaggerService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_SwaggerService.adoc
index 3bc5d7b..99681a8 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_SwaggerService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_api_SwaggerService.adoc
@@ -38,7 +38,7 @@ public interface SwaggerService {
 }
 ----
 <1> Generate a Swagger spec for use by third-party clients, ie public use.  
This specification is restricted only to
-xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model]s and to domain 
services with a xref:../rgant/rgant.adoc#_rgant-DomainService_nature[nature] of 
`VIEW_REST_ONLY`.
+xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model]s and to domain services with a 
xref:../rgant/rgant.adoc#_rgant-DomainService_nature[nature] of 
`VIEW_REST_ONLY`.
 <2> Generate a Swagger spec for use only by internally-managed clients, ie 
private internal use.  This specification includes domain entities and all menu 
domain services (as well as any view models).
 <3> Generate a Swagger spec that is the same as private case (above), but also 
including any xref:../rgant/rgant.adoc#_rgant-Action_restrictTo[prototype] 
actions.
 <4> Swagger specs can be written either in JSON or YAML format.

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditerService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditerService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditerService.adoc
index 85e0ec7..16ec117 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditerService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditerService.adoc
@@ -109,7 +109,7 @@ Assuming that an `AppManifest` is being used to 
xref:../rgcms/rgcms.adoc#_rgcms_
 then this can be activated by updating the `pom.xml` and updating the 
`AppManifest#getModules()` method.
 
 If menu items or contributions are not required in the UI, these can be 
suppressed either using security or by
-implementing a 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing 
subscriber].
+implementing a 
xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing 
subscriber].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditingService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditingService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditingService.adoc
index 062c87e..a80990d 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditingService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_AuditingService.adoc
@@ -71,7 +71,7 @@ Assuming that an `AppManifest` is being used to 
xref:../rgcms/rgcms.adoc#_rgcms_
 then this can be activated by updating the `pom.xml` and updating the 
`AppManifest#getModules()` method.
 
 If menu items or contributions are not required in the UI, these can be 
suppressed either using security or by
-implementing a 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing 
subscriber].
+implementing a 
xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing 
subscriber].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_BackgroundCommandService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_BackgroundCommandService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_BackgroundCommandService.adoc
index 7040283..410673a 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_BackgroundCommandService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_BackgroundCommandService.adoc
@@ -114,7 +114,7 @@ Assuming that an `AppManifest` is being used to 
xref:../rgcms/rgcms.adoc#_rgcms_
 then this can be activated by updating the `pom.xml` and updating the 
`AppManifest#getModules()` method.
 
 If contributions are not required in the UI, these can be suppressed either 
using security or by implementing a
-xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing 
subscriber].
+xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing 
subscriber].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_CommandService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_CommandService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_CommandService.adoc
index d0dcb05..5f6d036 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_CommandService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_CommandService.adoc
@@ -101,7 +101,7 @@ Assuming that an `AppManifest` is being used to 
xref:../rgcms/rgcms.adoc#_rgcms_
 then this can be activated by updating the `pom.xml` and updating the 
`AppManifest#getModules()` method.
 
 If contributions are not required in the UI, these can be suppressed either 
using security or by implementing a
-xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing 
subscriber].
+xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing 
subscriber].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublisherService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublisherService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublisherService.adoc
index 192638f..4d0d648 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublisherService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublisherService.adoc
@@ -120,7 +120,7 @@ the `pom.xml` and updating the `AppManifest#getModules()` 
method.
 
 The module also provide services that contribute to the UI.  If contributions 
are not required in the UI, these can be
 suppressed either using security or by implementing a
-xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing 
subscriber].
+xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing 
subscriber].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublishingService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublishingService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublishingService.adoc
index f64091a..a8a7787 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublishingService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_PublishingService.adoc
@@ -160,7 +160,7 @@ the `pom.xml` and updating the `AppManifest#getModules()` 
method.
 
 The module also provides services that contribute to the UI.  If contributions 
are not required in the UI, these can be
 suppressed either using security or by implementing a
-xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing 
subscriber].
+xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing 
subscriber].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_TranslationService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_TranslationService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_TranslationService.adoc
index 16a713e..53bc9b6 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_TranslationService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_TranslationService.adoc
@@ -64,7 +64,7 @@ Assuming that the `configuration-and-annotation` services 
installer is configure
 `AppManifest` to 
xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the 
app]) then Apache Isis' core
 implementation of `TranslationService` service (along with the supporting menu 
service) are automatically registered and injected (it is annotated with 
`@DomainService`) so no further configuration is required.
 
-If the menu items are not required then these can be suppressed either using 
security or by implementing a 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_vetoing-visibility[vetoing 
subscriber].
+If the menu items are not required then these can be suppressed either using 
security or by implementing a 
xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing 
subscriber].
 
 To use an alternative implementation, use
 
xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`]
 (as explained

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_UrlEncodingService.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_UrlEncodingService.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_UrlEncodingService.adoc
index 05f948c..0dd1e21 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_UrlEncodingService.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_spi_UrlEncodingService.adoc
@@ -7,7 +7,7 @@
 
 
 The `UrlEncodingService` defines a consistent way to convert strings to/from a 
form safe for use
-within a URL.  The service is used by the framework to map 
xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view model]
+within a URL.  The service is used by the framework to map 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 model]
 mementos (derived from the state of the view model itself) into a form that 
can be used as a view model.  When the
 framework needs to recreate the view model (for example to invoke an action on 
it), this URL is converted back into a
 view model memento, from which the view model can then be hydrated.

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling.adoc 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling.adoc
deleted file mode 100644
index 48b29ca..0000000
--- a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling.adoc
+++ /dev/null
@@ -1,30 +0,0 @@
-[[_ugbtb_decoupling]]
-= Decoupling
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-
-We use Maven modules as a way to group related domain objects together; we can 
then reason about all the classes in that module as a single unit.
-By convention there will be a single top-level package corresponding to the 
module.
-
-
-This section describes how to use Apache Isis' features to ensure that your 
domain application remains decoupled.
-The techniques described here are also the ones that have been adopted by the 
various http://github.com/isisaddons[Isis Addons] modules (not ASF) for 
security, commands, auditing etc.
-
-The following sections describe how to re-assemble an application, in 
particular where some modules are in-house but others are potentially 
third-party (eg the Isis Addons modules).
-
-[NOTE]
-====
-There is some overlap with Java 9's Jigsaw concepts of "module"; in the future 
we expect to refactor Apache Isis to build on top of this module system.
-====
-
-include::_ugbtb_decoupling_db-schemas.adoc[leveloffset=+1]
-include::_ugbtb_decoupling_mixins.adoc[leveloffset=+1]
-include::_ugbtb_decoupling_contributions.adoc[leveloffset=+1]
-include::_ugbtb_decoupling_vetoing-visibility.adoc[leveloffset=+1]
-include::_ugbtb_decoupling_event-bus.adoc[leveloffset=+1]
-include::_ugbtb_decoupling_pushing-changes.adoc[leveloffset=+1]
-
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributed-members.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributed-members.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributed-members.adoc
deleted file mode 100644
index 92c37b4..0000000
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributed-members.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[[_ugbtb_decoupling_contributed-members]]
-= Contributed Members
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributions.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributions.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributions.adoc
deleted file mode 100644
index 09844ad..0000000
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_contributions.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-[[_ugbtb_decoupling_contributions]]
-= Contributions
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-
-NOTE: FIXME - combine with mixins, above
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_db-schemas.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_db-schemas.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_db-schemas.adoc
deleted file mode 100644
index 389185c..0000000
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_db-schemas.adoc
+++ /dev/null
@@ -1,141 +0,0 @@
-[[_ugbtb_decoupling_db-schemas]]
-= Database Schemas
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-In the same way that Java packages act as a namespace for domain objects, it's 
good practice to map domain entities to
-their own (database) schemas. As of 1.9.0, all the 
link:http://www.isisaddons.org[Isis Addons] (non-ASF) modules do this, for 
example:
-
-
-
-[source,java]
-----
-@javax.jdo.annotations.PersistenceCapable( ...
-        schema = "isissecurity",
-        table = "ApplicationUser")
-public class ApplicationUser ... { ... }
-----
-
-results in a `CREATE TABLE` statement of:
-
-[source,sql]
-----
-CREATE TABLE isissecurity."ApplicationUser" (
-    ...
-)
-----
-
-
-while:
-
-[source,java]
-----
-@javax.jdo.annotations.PersistenceCapable( ...
-        schema = "isisaudit",
-        table="AuditEntry")
-public class AuditEntry ... { ... }
-----
-
-similarly results in:
-
-[source,sql]
-----
-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:../ugodn/ugodn.adoc#_ugodn_configuring[configuring DataNucleus 
Overriding Annotations] for more details.
-====
-
-
-
-
-== Listener to create schema
-
-JDO/DataNucleus does not automatically create these schema objects, but it 
_does_ provide a listener callback API
-on the initialization of each class into the JDO metamodel.
-
-[TIP]
-====
-Actually, the above statement isn't quite true.  In DN 3.2.x (as used by 
Apache Isis up to v1.8.0) there was no support for schemas.  As of Apache Isis 
1.9.0 and DN 4.0 there is now support.  But we implemented this feature 
initially against DN 3.2.x, and it still works, so for now we've decided to 
leave it in.
-====
-
-Therefore Apache Isis attaches a listener, 
`CreateSchemaObjectFromClassMetadata`, that checks for the schema's existence, 
and creates the schema if required.
-
-The guts of its implementation is:
-
-[source,java]
-----
-public class CreateSchemaObjectFromClassMetadata
-        implements MetaDataListener,
-                   DataNucleusPropertiesAware {
-    @Override
-    public void loaded(final AbstractClassMetaData cmd) { ... }
-
-    protected String buildSqlToCheck(final AbstractClassMetaData cmd) {
-        final String schemaName = schemaNameFor(cmd);
-        return String.format(
-            "SELECT count(*) FROM INFORMATION_SCHEMA.SCHEMATA where 
SCHEMA_NAME = '%s'", schemaName);
-    }
-    protected String buildSqlToExec(final AbstractClassMetaData cmd) {
-        final String schemaName = schemaNameFor(cmd);
-        return String.format("CREATE SCHEMA \"%s\"", schemaName);
-    }
-}
-----
-
-where `MetaDataListener` is the DataNucleus listener API:
-
-[source,java]
-----
-public interface MetaDataListener {
-    void loaded(AbstractClassMetaData cmd);
-}
-----
-
-Although not formal API, the default `CreateSchemaObjectFromClassMetadata` has 
been designed to be easily overrideable if you
-need to tweak it to support other RDBMS'.  Any implementation must implement 
`org.datanucleus.metadata.MetaDataListener`:
-
-The implementation provided has has been tested for HSQLDB, PostgreSQL and MS 
SQL Server, and is used automatically unless an alternative implementation is 
specified (as described in the section below).
-
-
-
-
-
-== Alternative implementation
-
-An alternative implementation can be registered and used through the following 
configuration property:
-
-[source,ini]
-----
-isis.persistor.datanucleus.classMetadataLoadedListener=\
-        
org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaObjectFromClassMetadata
-----
-
-
-Because this pertains to the JDO Objectstore we suggest you put this 
configuration property in `WEB-INF/persistor_datanucleus.properties`; but 
putting it in `isis.properties` will also work.
-
-Any implementation must implement `org.datanucleus.metadata.MetaDataListener`. 
 In many cases simply subclassing from `CreateSchemaObjectFromClassMetadata` 
and overriding `buildSqlToCheck(...)` and `buildSqlToExec(...)` should suffice.
-
-If you _do_ need more control, your implementation can also optionally 
implement  
`org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPropertiesAware`:
-
-[source,java]
-----
-public interface DataNucleusPropertiesAware {
-    public void setDataNucleusProperties(final Map<String, String> properties);
-}
-----
-
-This provides access to the properties passed through to JDO/DataNucleus.
-
-
-[IMPORTANT]
-====
-If you do extend Apache Isis' `CreateSchemaObjectFromClassMetadata` class for 
some other database, please 
https://issues.apache.org/jira/browse/ISIS[contribute back] your improvements.
-====
-

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_event-bus.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_event-bus.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_event-bus.adoc
deleted file mode 100644
index 9f866fc..0000000
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_event-bus.adoc
+++ /dev/null
@@ -1,11 +0,0 @@
-[[_ugbtb_decoupling_event-bus]]
-= Event Bus
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-NOTE: FIXME - see 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`], 
xref:../rgant/rgant.adoc#_rgant-Action_domainEvent[`@Action#domainEvent()`], 
xref:../rgant/rgant.adoc#_rgant-Property_domainEvent[`@Property#domainEvent()`],
 
xref:../rgant/rgant.adoc#_rgant-Collection_domainEvent[`@Collection#domainEvent()`],
 xref:../rgsvc/rgsvc.adoc#_rgsvc_api_WrapperFactory[`WrapperFactory`].
-
-
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_mixins.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_mixins.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_mixins.adoc
deleted file mode 100644
index 566b840..0000000
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_mixins.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-[[_ugbtb_decoupling_mixins]]
-= Mixins
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_pushing-changes.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_pushing-changes.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_pushing-changes.adoc
deleted file mode 100644
index abd6e52..0000000
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_pushing-changes.adoc
+++ /dev/null
@@ -1,140 +0,0 @@
-[[_ugbtb_decoupling_pushing-changes]]
-= Pushing Changes
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-
-[NOTE]
-====
-This technique is much less powerful than using 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_event-bus[the event bus] .  We 
present it mostly for completeness.
-====
-
-
-
-
-== When a property is changed
-
-If you want to invoke functionality whenever a property is changed by the 
user, then you should create a supporting `modifyXxx()` method and include the 
functionality within that. The syntax is:
-
-[source,java]
---
-public void modifyPropertyName(PropertyType param) { ... }
---
-
-Why not just put this functionality in the setter? Well, the setter is used by 
the object store to recreate the state of an already persisted object. Putting 
additional behaviour in the setter would cause it to be triggered incorrectly.
-
-For example:
-
-[source,java]
---
-public class Order() {
-    public Integer getAmount() { ... }
-    public void setAmount(Integer amount) { ... }
-    public void modifyAmount(Integer amount) { // <1>
-        setAmount(amount);  // <3>
-        addToTotal(amount); // <2>
-    }
-    ...
-}
---
-<1> The `modifyAmount()` method calls ...
-<2> ... the `addToTotal()` (not shown) to maintain some running total.
-
-We don't want this `addToCall()` method to be called when pulling the object 
back from the object store, so we put it into the modify, not the setter.
-
-You may optionally also specify a `clearXxx()` which works the same way as 
modify `modify Xxx()` but is called when the property is cleared by the user 
(i.e. the current value replaced by nothing). The syntax is:
-
-[source,java]
---
-public void clearPropertyName() { ... }
---
-
-To extend the above example:
-
-[source,java]
---
-public class Order() {
-    public Integer getAmount() { ... }
-    public void setAmount(Integer amount) { ... }
-    public void modifyAmount(Integer amount) { ... }
-    public void clearAmount() {
-        removeFromTotal(this.amount);
-        setAmount(null);
-    }
-    ...
-}
---
-
-
-
-
-== When a collection is modified
-
-A collection may have a corresponding `addToXxx()` and/or
-`removeFromXxx()` method. If present, and direct manipulation of the
-contents of the connection has not been disabled (see ?), then they will
-be called (instead of adding/removing an object directly to the
-collection returned by the accessor).
-
-The reason for this behaviour is to allow other behaviour to be
-triggered when the contents of the collection is altered. That is, it is
-directly equivalent to the supporting `modifyXxx()` and `clearXxx()`
-methods for properties (see ?).
-
-The syntax is:
-
-[source,java]
---
-public void addTo<CollectionName>(EntityType param) { ... }
---
-
-and
-
-[source,java]
---
-public void removeFromCollectionName(EntityType param) { ... }
---
-
-where `EntityType` is the same type as the generic collection type.
-
-For example:
-
-[source,java]
---
-public class Employee { ... }
-
-public class Department {
-
-    private int numMaleEmployees;                           // <1>
-    private int numFemaleEmployees;                         // <2>
-
-    private Set<Employee> employees = new TreeSet<Employee>();
-    public Set<Employee> getEmployees() {
-        return employees;
-    }
-    private void setEmployees(Set<Employee> employees) {
-        this.employees = employees;
-    }
-    public void addToEmployees(Employee employee) {         // <3>
-        numMaleEmployees += countOneMale(employee);
-        numFemaleEmployees += countOneFemale(employee);
-        employees.add(employee);
-    }
-    public void removeFromEmployees(Employee employee) {    // <4>
-        numMaleEmployees -= countOneMale(employee);
-        numFemaleEmployees -= countOneFemale(employee);
-        employees.remove(employee);
-    }
-    private int countOneMale(Employee employee) { return 
employee.isMale()?1:0; }
-    private int countOneFemale(Employee employee) { return 
employee.isFemale()?1:0; }
-
-    ...
-}
---
-<1> maintain a count of the number of male ...
-<2> ... and female employees (getters and setters omitted)
-<3> the xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_addTo[`addTo...()`] 
method increments the derived properties
-<4> the 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_removeFrom[`removeFrom...()`] 
method similarly decrements the derived properties
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_vetoing-visibility.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_vetoing-visibility.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_vetoing-visibility.adoc
deleted file mode 100644
index c012be3..0000000
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_decoupling_vetoing-visibility.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-[[_ugbtb_decoupling_vetoing-visibility]]
-= Vetoing Visibility
-: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 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.
-:_basedir: ../../
-:_imagesdir: images/
-
-
-NOTE: FIXME - a write-up of the "vetoing subscriber" design pattern, eg as 
described in the  
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_BookmarkService[`BookmarkService`]
-
-
-eg if included an addon such as auditing or security.
-
-solution is to write a domain event subscriber that vetoes the visibility
-
-All the addons actions inherit from common base classes so this can be as 
broad-brush or fine-grained as required
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips.adoc 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips.adoc
index 8ebe0a7..c79c0c4 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips.adoc
@@ -24,7 +24,9 @@ See also hints-n-tips chapters in the:
 
 
 include::_ugbtb_hints-and-tips_are-you-sure.adoc[leveloffset=+1]
+include::_ugbtb_hints-and-tips_vetoing-visibility.adoc[leveloffset=+1]
 
include::_ugbtb_hints-and-tips_how-to-handle-void-and-null-results.adoc[leveloffset=+1]
 
include::_ugbtb_hints-and-tips_subclass-properties-in-tables.adoc[leveloffset=+1]
 
include::_ugbtb_hints-and-tips_simulating-collections-of-values.adoc[leveloffset=+1]
+include::_ugbtb_hints-and-tips_pushing-changes.adoc[leveloffset=+1]
 
include::_ugbtb_hints-and-tips_how-to-implement-a-spellchecker.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_are-you-sure.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_are-you-sure.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_are-you-sure.adoc
index 66bc6d7..be0e1b4 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_are-you-sure.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_are-you-sure.adoc
@@ -29,7 +29,7 @@ public SimpleObject updateName(
 
 This will render as:
 
-image::{_imagesdir}/how-tos/tips-n-tricks/action-semantics-are-you-sure.png[]
+image::{_imagesdir}/hints-and-tips/action-semantics-are-you-sure.png[]
 
 
 == Using a checkbox
@@ -38,7 +38,7 @@ An alternative approach (for all versions of the framework) 
is to require the en
 
 For example:
 
-image::{_imagesdir}/how-tos/tips-n-tricks/are-you-sure.png[]
+image::{_imagesdir}/hints-and-tips/are-you-sure.png[]
 
 [NOTE]
 ====
@@ -47,13 +47,13 @@ Note that these screenshots shows an earlier version of the 
xref:../ugvw/ugvw.ad
 
 If the user checks the box:
 
-image::{_imagesdir}/how-tos/tips-n-tricks/are-you-sure-happy-case.png[]
+image::{_imagesdir}/hints-and-tips/are-you-sure-happy-case.png[]
 
 then the action will complete.
 
 However, if the user fails to check the box, then a validation message is 
shown:
 
-image::{_imagesdir}/how-tos/tips-n-tricks/are-you-sure-sad-case.png[]
+image::{_imagesdir}/hints-and-tips/are-you-sure-sad-case.png[]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_pushing-changes.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_pushing-changes.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_pushing-changes.adoc
new file mode 100644
index 0000000..44f6eb9
--- /dev/null
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_pushing-changes.adoc
@@ -0,0 +1,140 @@
+[[_ugbtb_hints-and-tips_pushing-changes]]
+= Pushing Changes (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 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.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+[NOTE]
+====
+This technique is much less powerful than using 
../ugfun/ugfun.adoc#_ugfun_building-blocks_events_domain-events[the event bus] 
or an SPI service.
+We present it mostly for completeness.
+====
+
+
+
+
+== When a property is changed
+
+If you want to invoke functionality whenever a property is changed by the 
user, then you can create a supporting `modifyXxx()` method and include the 
functionality within that. The syntax is:
+
+[source,java]
+--
+public void modifyPropertyName(PropertyType param) { ... }
+--
+
+Why not just put this functionality in the setter? Well, the setter is used by 
the object store to recreate the state of an already persisted object. Putting 
additional behaviour in the setter would cause it to be triggered incorrectly.
+
+For example:
+
+[source,java]
+--
+public class Order() {
+    public Integer getAmount() { ... }
+    public void setAmount(Integer amount) { ... }
+    public void modifyAmount(Integer amount) { // <1>
+        setAmount(amount);  // <3>
+        addToTotal(amount); // <2>
+    }
+    ...
+}
+--
+<1> The `modifyAmount()` method calls ...
+<2> ... the `addToTotal()` (not shown) to maintain some running total.
+
+We don't want this `addToCall()` method to be called when pulling the object 
back from the object store, so we put it into the modify, not the setter.
+
+You may optionally also specify a `clearXxx()` which works the same way as 
modify `modify Xxx()` but is called when the property is cleared by the user 
(i.e. the current value replaced by nothing). The syntax is:
+
+[source,java]
+--
+public void clearPropertyName() { ... }
+--
+
+To extend the above example:
+
+[source,java]
+--
+public class Order() {
+    public Integer getAmount() { ... }
+    public void setAmount(Integer amount) { ... }
+    public void modifyAmount(Integer amount) { ... }
+    public void clearAmount() {
+        removeFromTotal(this.amount);
+        setAmount(null);
+    }
+    ...
+}
+--
+
+
+
+== When a collection is modified
+
+A collection may have a corresponding `addToXxx()` and/or
+`removeFromXxx()` method. If present, and direct manipulation of the
+contents of the connection has not been disabled (see ?), then they will
+be called (instead of adding/removing an object directly to the
+collection returned by the accessor).
+
+The reason for this behaviour is to allow other behaviour to be
+triggered when the contents of the collection is altered. That is, it is
+directly equivalent to the supporting `modifyXxx()` and `clearXxx()`
+methods for properties (see ?).
+
+The syntax is:
+
+[source,java]
+--
+public void addTo<CollectionName>(EntityType param) { ... }
+--
+
+and
+
+[source,java]
+--
+public void removeFromCollectionName(EntityType param) { ... }
+--
+
+where `EntityType` is the same type as the generic collection type.
+
+For example:
+
+[source,java]
+--
+public class Employee { ... }
+
+public class Department {
+
+    private int numMaleEmployees;                           // <1>
+    private int numFemaleEmployees;                         // <2>
+
+    private Set<Employee> employees = new TreeSet<Employee>();
+    public Set<Employee> getEmployees() {
+        return employees;
+    }
+    private void setEmployees(Set<Employee> employees) {
+        this.employees = employees;
+    }
+    public void addToEmployees(Employee employee) {         // <3>
+        numMaleEmployees += countOneMale(employee);
+        numFemaleEmployees += countOneFemale(employee);
+        employees.add(employee);
+    }
+    public void removeFromEmployees(Employee employee) {    // <4>
+        numMaleEmployees -= countOneMale(employee);
+        numFemaleEmployees -= countOneFemale(employee);
+        employees.remove(employee);
+    }
+    private int countOneMale(Employee employee) { return 
employee.isMale()?1:0; }
+    private int countOneFemale(Employee employee) { return 
employee.isFemale()?1:0; }
+
+    ...
+}
+--
+<1> maintain a count of the number of male ...
+<2> ... and female employees (getters and setters omitted)
+<3> the xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_addTo[`addTo...()`] 
method increments the derived properties
+<4> the 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_removeFrom[`removeFrom...()`] 
method similarly decrements the derived properties
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_vetoing-visibility.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_vetoing-visibility.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_vetoing-visibility.adoc
new file mode 100644
index 0000000..da0742b
--- /dev/null
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_hints-and-tips_vetoing-visibility.adoc
@@ -0,0 +1,15 @@
+[[_ugbtb_hints-and-tips_vetoing-visibility]]
+= Vetoing Visibility
+: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 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.
+:_basedir: ../../
+:_imagesdir: images/
+
+
+NOTE: FIXME - a write-up of the "vetoing subscriber" design pattern, eg as 
described in the  
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_BookmarkService[`BookmarkService`]
+
+
+eg if included an addon such as auditing or security.
+
+solution is to write a domain event subscriber that vetoes the visibility
+
+All the addons actions inherit from common base classes so this can be as 
broad-brush or fine-grained as required
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/action-semantics-are-you-sure.png
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/action-semantics-are-you-sure.png
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/action-semantics-are-you-sure.png
new file mode 100644
index 0000000..f0cf269
Binary files /dev/null and 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/action-semantics-are-you-sure.png
 differ

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-happy-case.png
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-happy-case.png
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-happy-case.png
new file mode 100644
index 0000000..1981c09
Binary files /dev/null and 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-happy-case.png
 differ

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-sad-case.png
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-sad-case.png
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-sad-case.png
new file mode 100644
index 0000000..6182447
Binary files /dev/null and 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure-sad-case.png
 differ

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure.png
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure.png
 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure.png
new file mode 100644
index 0000000..e1a76fe
Binary files /dev/null and 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/images/hints-and-tips/are-you-sure.png
 differ

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugbtb/ugbtb.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugbtb/ugbtb.adoc 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/ugbtb.adoc
index 3d3c365..5f29c15 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugbtb/ugbtb.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugbtb/ugbtb.adoc
@@ -43,7 +43,6 @@ The remaining guides are:
 * xref:../cgcom/cgcom.adoc#[Committers' Guide] (release procedures and related 
practices)
 
 
-include::_ugbtb_decoupling.adoc[leveloffset=+1]
 include::_ugbtb_i18n.adoc[leveloffset=+1]
 include::_ugbtb_headless-access.adoc[leveloffset=+1]
 include::_ugbtb_hints-and-tips.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
index 9911cc6..f491a21 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_events_domain-events.adoc
@@ -5,7 +5,7 @@
 :_imagesdir: images/
 
 
-Domain events are fired for each object member (property, collection or 
action).
+Domain events are fired -- through the internal 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_EventBusService[event bus] -- for every 
user interaction with each object member (property, collection or action).
 
 By default, rendering a property causes a `PropertyDomainEvent` to be fired, 
though the 
xref:../rgant/rgant.adoc#_rgant_Property_domainEvent[`@Property#domainEvent()`] 
attribute allows a custom subclass to be specified if necessary.
 Similarly, rendering a collection causes a `CollectionDomainEvent` to be 
fired, and rendering an action causes an `ActionDomainEvent` to be fired.

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_types-of-domain-objects_view-models.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_types-of-domain-objects_view-models.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_types-of-domain-objects_view-models.adoc
index 07c8b50..020a3d2 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_types-of-domain-objects_view-models.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_building-blocks_types-of-domain-objects_view-models.adoc
@@ -127,7 +127,7 @@ This is done by annotating the class using JAXB 
annotations; this allows the con
 A discussion of how that might be done using an ESB such as 
link:http://camel.apache.org[Apache Camel(TM)] follows 
xref:../ugbtb/ugbtb.adoc#__ugfun_building-blocks_view-models_dtos_consumers[below].
 
 In case it's not obvious, these DTOs are still usable as "regular" view 
models; they will render in the xref:../ugvw/ugvw.adoc#[Wicket viewer] just 
like any other.
-In fact (as the 
xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models_programming-model[programming 
model] section below makes clear), these JAXB-annotated view models are in many 
regards the most powerful of all the alternative ways of writing view models.
+In fact (as the 
xref:../ugfun/ugfun.adoc#_ugfun_programming-model_view-models_jaxb[programming 
model] section below makes clear), these JAXB-annotated view models are in many 
regards the most powerful of all the alternative ways of writing view models.
 
 It's also worth noting that it is also possible to download the XML (or XSD) 
straight from the UI, useful during development.
 The view model simply needs to implement the 
xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins_Dto[`Dto`] marker interface; the 
framework has xref:../rgcms/rgcms.adoc#_rgcms_classes_mixins_Dto[mixins] that 
contribute the download actions to the view model.

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
index 9f7b296..d80779f 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
@@ -32,7 +32,7 @@ In these cases Apache Isis can often provide a reasonable 
alternative, namely to
 In such cases there is still only a single physical datastore, and so 
transactional integrity is retained.
 
 Or, the CQRS architecture can be more fully implemented with Apache Isis by 
introducing a separate read model, synchronized using the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_PublishingService[`PublishingService`], or 
using 
xref:../rgcms/rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscribers]  
on the xref:../rgsvc/rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`].
-One can then use xref:../ugbtb/ugbtb.adoc#_ugbtb_view-models[view models] to 
surface the data in the external read datastore.
+One can then use 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-models[view
 models] to surface the data in the external read datastore.
 
 With respect to commands, Apache Isis does of course support the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] which 
allows each business action to be reified into a `Command`.
 However, names are misleading here: Apache Isis' commands are relatively 
passive, merely recording the intent of the user to invoke some operation.
@@ -43,7 +43,7 @@ With Apache Isis, though, the end-user merely invokes the 
`placeOrder(...)` acti
 In CQRS the commands correspond to the business logic that mutates the system.
 Whether this logic is part of the command class (`PlaceOrderCommand`) or 
whether that command delegates to methods on the domain object is an 
implementation detail; but it certainly is common for the business logic to be 
wholly within the command object and for the domain object to be merely a data 
holder of the data within the command/write datastore.
 
-In Apache Isis this same separation of business logic from the underlying data 
can be accomplished most straightforwardly using 
xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixins] or 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_contributed-members[contributions].
+In Apache Isis this same separation of business logic from the underlying data 
can be accomplished most straightforwardly using 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]
 or xref:../ugfun/ugfun.adoc#_ugfun_how-tos_contributed-members[contributions].
 In the UI (surfaced by the xref:../ugvw/ugvw.adoc#[Wicket viewer]) or in the 
REST API (surfaced by the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer]) the 
behaviour appears to reside on the domain object; however the behaviour 
actually resides on separate classes and is mixed in (like a trait) only at 
runtime.
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/29d19fff/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
index b1f20e0..bbe6b6a 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
@@ -62,4 +62,4 @@ Apache Isis' support for contributions (not only contributed 
actions, but also c
 And again, to loop back to the topic of this section, it's an AOP concept that 
being implemented by the framework.
 
 The nice thing about aspect orientation is that for the most part you can 
ignore these cross-cutting concerns and - at least initially at least - just 
focus on implementing your domain object.
-Later when your app starts to grow and you start to break it out into smaller 
modules, you can leverage Apache Isis' AOP support for 
(xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_mixins[mixins]), 
(xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_contributions[contributions]) and 
interceptors (the xref:../ugbtb/ugbtb.adoc#_ugbtb_decoupling_event-bus[event 
bus]) to ensure that your codebase remains maintainable.
\ No newline at end of file
+Later when your app starts to grow and you start to break it out into smaller 
modules, you can leverage Apache Isis' AOP support for 
(xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins]),
 
(xref:../ugfun/ugfun.adoc#_ugfun_programming-model_domain-services_contributions[contributed
 services]) and interceptors (the 
xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_events_domain-events[event 
bus]) to ensure that your codebase remains maintainable.
\ No newline at end of file

Reply via email to