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 2018/02/13 22:34:28 UTC

[1/5] isis-site git commit: ISIS-1813: snapshot for 1.16.1-SNAPSHOT.

Repository: isis-site
Updated Branches:
  refs/heads/asf-site f27adae8d -> fcfba6eda


http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/quotes.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/quotes.html b/content/versions/SNAPSHOT/quotes.html
index 900b021..d1b81e5 100644
--- a/content/versions/SNAPSHOT/quotes.html
+++ b/content/versions/SNAPSHOT/quotes.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -535,7 +536,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/release-notes/release-notes.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/release-notes/release-notes.html b/content/versions/SNAPSHOT/release-notes/release-notes.html
index 79f74e8..3f7110c 100644
--- a/content/versions/SNAPSHOT/release-notes/release-notes.html
+++ b/content/versions/SNAPSHOT/release-notes/release-notes.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -4225,7 +4226,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/support.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/support.html b/content/versions/SNAPSHOT/support.html
index a6e7655..fbb82f4 100644
--- a/content/versions/SNAPSHOT/support.html
+++ b/content/versions/SNAPSHOT/support.html
@@ -241,6 +241,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -359,7 +360,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 


[5/5] isis-site git commit: ISIS-1813: snapshot for 1.16.1-SNAPSHOT.

Posted by da...@apache.org.
ISIS-1813: snapshot for 1.16.1-SNAPSHOT.

* Docs on new features
* version in header
* removes petclinic tutorial


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

Branch: refs/heads/asf-site
Commit: fcfba6edaa6c133cd807b252207efc2cb3ea5c56
Parents: f27adae
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Feb 13 22:34:09 2018 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Feb 13 22:34:09 2018 +0000

----------------------------------------------------------------------
 content/versions/SNAPSHOT/asf.html              |    3 +-
 content/versions/SNAPSHOT/documentation.html    |    3 +-
 content/versions/SNAPSHOT/downloads.html        |    3 +-
 .../versions/SNAPSHOT/elasticlunr/index.json    |    2 +-
 .../versions/SNAPSHOT/guides/cgcom/cgcom.html   |    3 +-
 .../versions/SNAPSHOT/guides/cgcom/cgcom.pdf    |    4 +-
 content/versions/SNAPSHOT/guides/dg/dg.html     |    3 +-
 content/versions/SNAPSHOT/guides/dg/dg.pdf      |    4 +-
 content/versions/SNAPSHOT/guides/htg.html       |    3 +-
 content/versions/SNAPSHOT/guides/htg.pdf        |    4 +-
 .../versions/SNAPSHOT/guides/rgant/rgant.html   |    3 +-
 .../versions/SNAPSHOT/guides/rgant/rgant.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/rgcfg/rgcfg.html   |    3 +-
 .../versions/SNAPSHOT/guides/rgcfg/rgcfg.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/rgcms/rgcms.html   |    3 +-
 .../versions/SNAPSHOT/guides/rgcms/rgcms.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/rgfis/rgfis.html   |    3 +-
 .../versions/SNAPSHOT/guides/rgfis/rgfis.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/rgmvn/rgmvn.html   |    3 +-
 .../versions/SNAPSHOT/guides/rgmvn/rgmvn.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/rgsvc/rgsvc.html   |    3 +-
 .../versions/SNAPSHOT/guides/rgsvc/rgsvc.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/ugbtb/ugbtb.html   |    3 +-
 .../versions/SNAPSHOT/guides/ugbtb/ugbtb.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/ugfun/ugfun.html   |    3 +-
 .../versions/SNAPSHOT/guides/ugfun/ugfun.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/ugodn/ugodn.html   |    3 +-
 .../versions/SNAPSHOT/guides/ugodn/ugodn.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/ugsec/ugsec.html   |    3 +-
 .../versions/SNAPSHOT/guides/ugsec/ugsec.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/ugtst/ugtst.html   |    3 +-
 .../versions/SNAPSHOT/guides/ugtst/ugtst.pdf    |    4 +-
 .../versions/SNAPSHOT/guides/ugvro/ugvro.html   |    3 +-
 .../versions/SNAPSHOT/guides/ugvro/ugvro.pdf    |    4 +-
 content/versions/SNAPSHOT/guides/ugvw/ugvw.html |    3 +-
 content/versions/SNAPSHOT/guides/ugvw/ugvw.pdf  |    4 +-
 content/versions/SNAPSHOT/help.html             |    3 +-
 .../migration-notes/migration-notes.html        |    3 +-
 .../articles-and-presentations.html             |    3 +-
 .../versions/SNAPSHOT/pages/books/books.html    |    3 +-
 .../SNAPSHOT/pages/cheat-sheet/cheat-sheet.html |    3 +-
 .../common-use-cases/common-use-cases.html      |    3 +-
 .../downloadable-presentations.html             |    3 +-
 .../pages/how-isis-works/how-isis-works.html    |    3 +-
 .../versions/SNAPSHOT/pages/icons/icons.html    |    3 +-
 .../isis-in-pictures/isis-in-pictures.html      |    3 +-
 .../SNAPSHOT/pages/more-thanks/more-thanks.html |    3 +-
 .../SNAPSHOT/pages/powered-by/powered-by.html   |    3 +-
 .../pages/screencasts/screencasts-older.html    |    3 +-
 .../SNAPSHOT/pages/screencasts/screencasts.html |    3 +-
 .../tutorials/pet-clinic/010-01-login-page.png  |  Bin 31965 -> 0 bytes
 .../tutorials/pet-clinic/010-02-home-page.png   |  Bin 54415 -> 0 bytes
 .../pet-clinic/010-03-prototyping-menu.png      |  Bin 59183 -> 0 bytes
 .../pet-clinic/010-04-simpleobjects.png         |  Bin 57805 -> 0 bytes
 .../pet-clinic/010-05-simpleobject-list.png     |  Bin 29631 -> 0 bytes
 .../pet-clinic/020-01-idea-configuration.png    |  Bin 35012 -> 0 bytes
 .../pet-clinic/020-02-idea-configuration.png    |  Bin 7430 -> 0 bytes
 .../030-01-idea-configuration-updated.png       |  Bin 35122 -> 0 bytes
 .../tutorials/pet-clinic/030-02-updated-app.png |  Bin 32215 -> 0 bytes
 .../040-01-idea-configuration-updated.png       |  Bin 35349 -> 0 bytes
 .../tutorials/pet-clinic/050-01-list-all.png    |  Bin 33299 -> 0 bytes
 .../tutorials/pet-clinic/050-02-view-pet.png    |  Bin 34270 -> 0 bytes
 .../tutorials/pet-clinic/060-01-owners-menu.png |  Bin 65309 -> 0 bytes
 .../tutorials/pet-clinic/060-02-owners-list.png |  Bin 31905 -> 0 bytes
 .../tutorials/pet-clinic/060-03-pets-list.png   |  Bin 36166 -> 0 bytes
 .../060-04-pet-owner-autoComplete.png           |  Bin 40468 -> 0 bytes
 .../tutorials/pet-clinic/domain-model.png       |  Bin 27464 -> 0 bytes
 content/versions/SNAPSHOT/pages/tg/tg.html      | 2350 ++++++------------
 content/versions/SNAPSHOT/quotes.html           |    3 +-
 .../SNAPSHOT/release-notes/release-notes.html   |    3 +-
 content/versions/SNAPSHOT/support.html          |    3 +-
 71 files changed, 888 insertions(+), 1636 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/asf.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/asf.html b/content/versions/SNAPSHOT/asf.html
index c62bbcc..2872e92 100644
--- a/content/versions/SNAPSHOT/asf.html
+++ b/content/versions/SNAPSHOT/asf.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -301,7 +302,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/documentation.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/documentation.html b/content/versions/SNAPSHOT/documentation.html
index 36996d8..4436107 100644
--- a/content/versions/SNAPSHOT/documentation.html
+++ b/content/versions/SNAPSHOT/documentation.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -491,7 +492,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/downloads.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/downloads.html b/content/versions/SNAPSHOT/downloads.html
index 25df230..ac78e5c 100644
--- a/content/versions/SNAPSHOT/downloads.html
+++ b/content/versions/SNAPSHOT/downloads.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -414,7 +415,7 @@ gpg -verify isis-1.16.0-source-release.zip.asc isis-1.16.0-source-release.zip</c
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 


[3/5] isis-site git commit: ISIS-1813: snapshot for 1.16.1-SNAPSHOT.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/cgcom/cgcom.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/cgcom/cgcom.html b/content/versions/SNAPSHOT/guides/cgcom/cgcom.html
index 8b963a8..83d86ad 100644
--- a/content/versions/SNAPSHOT/guides/cgcom/cgcom.html
+++ b/content/versions/SNAPSHOT/guides/cgcom/cgcom.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -4399,7 +4400,7 @@ modify_committee.pl isis --remove joebloggs</code></pre>
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/cgcom/cgcom.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/cgcom/cgcom.pdf b/content/versions/SNAPSHOT/guides/cgcom/cgcom.pdf
index d8f6fd1..c4352f0 100644
--- a/content/versions/SNAPSHOT/guides/cgcom/cgcom.pdf
+++ b/content/versions/SNAPSHOT/guides/cgcom/cgcom.pdf
@@ -4,8 +4,8 @@
 << /Title (Committers' Guide)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213130912+00'00')
-/ModDate (D:20180213130912+00'00')
+/CreationDate (D:20180213222635+00'00')
+/ModDate (D:20180213222635+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/dg/dg.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/dg/dg.html b/content/versions/SNAPSHOT/guides/dg/dg.html
index 0d24548..d2d5659 100644
--- a/content/versions/SNAPSHOT/guides/dg/dg.html
+++ b/content/versions/SNAPSHOT/guides/dg/dg.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -5840,7 +5841,7 @@ hide method lines</code></pre>
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/dg/dg.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/dg/dg.pdf b/content/versions/SNAPSHOT/guides/dg/dg.pdf
index 49f9350..5259d6c 100644
--- a/content/versions/SNAPSHOT/guides/dg/dg.pdf
+++ b/content/versions/SNAPSHOT/guides/dg/dg.pdf
@@ -4,8 +4,8 @@
 << /Title (Developers' Guide)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213130926+00'00')
-/ModDate (D:20180213130926+00'00')
+/CreationDate (D:20180213222649+00'00')
+/ModDate (D:20180213222649+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/htg.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/htg.html b/content/versions/SNAPSHOT/guides/htg.html
index fb7d3f4..a1c17a1 100644
--- a/content/versions/SNAPSHOT/guides/htg.html
+++ b/content/versions/SNAPSHOT/guides/htg.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -3233,7 +3234,7 @@ serviceRegistry.injectServicesInto(viewModel);</code></pre>
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/htg.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/htg.pdf b/content/versions/SNAPSHOT/guides/htg.pdf
index df50539..e177a38 100644
--- a/content/versions/SNAPSHOT/guides/htg.pdf
+++ b/content/versions/SNAPSHOT/guides/htg.pdf
@@ -4,8 +4,8 @@
 << /Title (Hints & Tips Guide)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213130939+00'00')
-/ModDate (D:20180213130939+00'00')
+/CreationDate (D:20180213222703+00'00')
+/ModDate (D:20180213222703+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgant/rgant.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgant/rgant.html b/content/versions/SNAPSHOT/guides/rgant/rgant.html
index d9575e8..3bf4b88 100644
--- a/content/versions/SNAPSHOT/guides/rgant/rgant.html
+++ b/content/versions/SNAPSHOT/guides/rgant/rgant.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -14395,7 +14396,7 @@ serviceRegistry.injectServicesInto(vm);</code></pre>
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgant/rgant.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgant/rgant.pdf b/content/versions/SNAPSHOT/guides/rgant/rgant.pdf
index dd54c21..2a6e0ec 100644
--- a/content/versions/SNAPSHOT/guides/rgant/rgant.pdf
+++ b/content/versions/SNAPSHOT/guides/rgant/rgant.pdf
@@ -4,8 +4,8 @@
 << /Title (Annotations)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213130952+00'00')
-/ModDate (D:20180213130952+00'00')
+/CreationDate (D:20180213222716+00'00')
+/ModDate (D:20180213222716+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.html b/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.html
index c71d9d0..fc46d9c 100644
--- a/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.html
+++ b/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -1810,7 +1811,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.pdf b/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.pdf
index 7be9a3d..cc4e3ce 100644
--- a/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.pdf
+++ b/content/versions/SNAPSHOT/guides/rgcfg/rgcfg.pdf
@@ -4,8 +4,8 @@
 << /Title <feff0043006f0072006500200043006f006e0066006900672019006e002000500072006f0070006500720074006900650073>
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131030+00'00')
-/ModDate (D:20180213131030+00'00')
+/CreationDate (D:20180213222757+00'00')
+/ModDate (D:20180213222757+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgcms/rgcms.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgcms/rgcms.html b/content/versions/SNAPSHOT/guides/rgcms/rgcms.html
index 4a465bd..1ddeed8 100644
--- a/content/versions/SNAPSHOT/guides/rgcms/rgcms.html
+++ b/content/versions/SNAPSHOT/guides/rgcms/rgcms.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -7646,7 +7647,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgcms/rgcms.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgcms/rgcms.pdf b/content/versions/SNAPSHOT/guides/rgcms/rgcms.pdf
index 749f8bf..732a4cb 100644
--- a/content/versions/SNAPSHOT/guides/rgcms/rgcms.pdf
+++ b/content/versions/SNAPSHOT/guides/rgcms/rgcms.pdf
@@ -4,8 +4,8 @@
 << /Title (Classes, Methods and Schema)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131034+00'00')
-/ModDate (D:20180213131034+00'00')
+/CreationDate (D:20180213222801+00'00')
+/ModDate (D:20180213222801+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgfis/rgfis.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgfis/rgfis.html b/content/versions/SNAPSHOT/guides/rgfis/rgfis.html
index b5ef362..94490ea 100644
--- a/content/versions/SNAPSHOT/guides/rgfis/rgfis.html
+++ b/content/versions/SNAPSHOT/guides/rgfis/rgfis.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -1550,7 +1551,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgfis/rgfis.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgfis/rgfis.pdf b/content/versions/SNAPSHOT/guides/rgfis/rgfis.pdf
index d6f3396..c59fb2e 100644
--- a/content/versions/SNAPSHOT/guides/rgfis/rgfis.pdf
+++ b/content/versions/SNAPSHOT/guides/rgfis/rgfis.pdf
@@ -4,8 +4,8 @@
 << /Title (Framework Internal Services)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131057+00'00')
-/ModDate (D:20180213131057+00'00')
+/CreationDate (D:20180213222825+00'00')
+/ModDate (D:20180213222825+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.html b/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.html
index f9b5546..5543f6e 100644
--- a/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.html
+++ b/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -1309,7 +1310,7 @@ public <span class="type">class</span> <span class="class">DomainAppDomManifest<
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.pdf b/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.pdf
index dbd3172..56522f7 100644
--- a/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.pdf
+++ b/content/versions/SNAPSHOT/guides/rgmvn/rgmvn.pdf
@@ -4,8 +4,8 @@
 << /Title (Apache Isis Maven plugin)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131101+00'00')
-/ModDate (D:20180213131101+00'00')
+/CreationDate (D:20180213222830+00'00')
+/ModDate (D:20180213222830+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.html b/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.html
index 6c4d9b9..ace9f31 100644
--- a/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.html
+++ b/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -11786,7 +11787,7 @@ log4j.additivity.org.apache.isis.applib.services.publish.PublisherServiceLogging
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.pdf b/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.pdf
index 9f40832..d12145c 100644
--- a/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.pdf
+++ b/content/versions/SNAPSHOT/guides/rgsvc/rgsvc.pdf
@@ -4,8 +4,8 @@
 << /Title (Domain Services)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131106+00'00')
-/ModDate (D:20180213131106+00'00')
+/CreationDate (D:20180213222835+00'00')
+/ModDate (D:20180213222835+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.html b/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.html
index 1e25a0f..fb48541 100644
--- a/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.html
+++ b/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -4571,7 +4572,7 @@ export ISIS_OPTS="isis.appManifest=domainapp.app.DomainAppAppManifestWithFixture
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.pdf b/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.pdf
index 69d1db9..064fa31 100644
--- a/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.pdf
+++ b/content/versions/SNAPSHOT/guides/ugbtb/ugbtb.pdf
@@ -4,8 +4,8 @@
 << /Title (Beyond the Basics)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131144+00'00')
-/ModDate (D:20180213131144+00'00')
+/CreationDate (D:20180213222914+00'00')
+/ModDate (D:20180213222914+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugfun/ugfun.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugfun/ugfun.html b/content/versions/SNAPSHOT/guides/ugfun/ugfun.html
index ffc27a8..04ec099 100644
--- a/content/versions/SNAPSHOT/guides/ugfun/ugfun.html
+++ b/content/versions/SNAPSHOT/guides/ugfun/ugfun.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -8878,7 +8879,7 @@ repositoryService.remove(customer);</code></pre>
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugfun/ugfun.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugfun/ugfun.pdf b/content/versions/SNAPSHOT/guides/ugfun/ugfun.pdf
index d755ff2..52dfc4f 100644
--- a/content/versions/SNAPSHOT/guides/ugfun/ugfun.pdf
+++ b/content/versions/SNAPSHOT/guides/ugfun/ugfun.pdf
@@ -4,8 +4,8 @@
 << /Title (Fundamentals)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131158+00'00')
-/ModDate (D:20180213131158+00'00')
+/CreationDate (D:20180213222929+00'00')
+/ModDate (D:20180213222929+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugodn/ugodn.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugodn/ugodn.html b/content/versions/SNAPSHOT/guides/ugodn/ugodn.html
index cd9bf05..ad56901 100644
--- a/content/versions/SNAPSHOT/guides/ugodn/ugodn.html
+++ b/content/versions/SNAPSHOT/guides/ugodn/ugodn.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -2016,7 +2017,7 @@ isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=</code></pre
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugodn/ugodn.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugodn/ugodn.pdf b/content/versions/SNAPSHOT/guides/ugodn/ugodn.pdf
index 48e0198..12e06c4 100644
--- a/content/versions/SNAPSHOT/guides/ugodn/ugodn.pdf
+++ b/content/versions/SNAPSHOT/guides/ugodn/ugodn.pdf
@@ -4,8 +4,8 @@
 << /Title (DataNucleus Object Store)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131229+00'00')
-/ModDate (D:20180213131229+00'00')
+/CreationDate (D:20180213223001+00'00')
+/ModDate (D:20180213223001+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugsec/ugsec.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugsec/ugsec.html b/content/versions/SNAPSHOT/guides/ugsec/ugsec.html
index 858a000..db56170 100644
--- a/content/versions/SNAPSHOT/guides/ugsec/ugsec.html
+++ b/content/versions/SNAPSHOT/guides/ugsec/ugsec.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -1934,7 +1935,7 @@ userRegistrationService.registerUser(userDetails);</code></pre>
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugsec/ugsec.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugsec/ugsec.pdf b/content/versions/SNAPSHOT/guides/ugsec/ugsec.pdf
index 99bbba6..8afe049 100644
--- a/content/versions/SNAPSHOT/guides/ugsec/ugsec.pdf
+++ b/content/versions/SNAPSHOT/guides/ugsec/ugsec.pdf
@@ -4,8 +4,8 @@
 << /Title (Security)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131235+00'00')
-/ModDate (D:20180213131235+00'00')
+/CreationDate (D:20180213223007+00'00')
+/ModDate (D:20180213223007+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugtst/ugtst.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugtst/ugtst.html b/content/versions/SNAPSHOT/guides/ugtst/ugtst.html
index 916482c..7f9f1d1 100644
--- a/content/versions/SNAPSHOT/guides/ugtst/ugtst.html
+++ b/content/versions/SNAPSHOT/guides/ugtst/ugtst.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -3104,7 +3105,7 @@ toDoItem = sudoService.sudo(username,
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugtst/ugtst.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugtst/ugtst.pdf b/content/versions/SNAPSHOT/guides/ugtst/ugtst.pdf
index 9f9a261..c90dd92 100644
--- a/content/versions/SNAPSHOT/guides/ugtst/ugtst.pdf
+++ b/content/versions/SNAPSHOT/guides/ugtst/ugtst.pdf
@@ -4,8 +4,8 @@
 << /Title (Testing)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131242+00'00')
-/ModDate (D:20180213131242+00'00')
+/CreationDate (D:20180213223014+00'00')
+/ModDate (D:20180213223014+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugvro/ugvro.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugvro/ugvro.html b/content/versions/SNAPSHOT/guides/ugvro/ugvro.html
index f7ddf13..9b77de0 100644
--- a/content/versions/SNAPSHOT/guides/ugvro/ugvro.html
+++ b/content/versions/SNAPSHOT/guides/ugvro/ugvro.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -2017,7 +2018,7 @@ findCustomer.get({<span class="key">queryString</span>: JSON.stringify(findCusto
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugvro/ugvro.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugvro/ugvro.pdf b/content/versions/SNAPSHOT/guides/ugvro/ugvro.pdf
index 4bc7389..c424dcd 100644
--- a/content/versions/SNAPSHOT/guides/ugvro/ugvro.pdf
+++ b/content/versions/SNAPSHOT/guides/ugvro/ugvro.pdf
@@ -4,8 +4,8 @@
 << /Title (Restful Objects Viewer)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131254+00'00')
-/ModDate (D:20180213131254+00'00')
+/CreationDate (D:20180213223025+00'00')
+/ModDate (D:20180213223025+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugvw/ugvw.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugvw/ugvw.html b/content/versions/SNAPSHOT/guides/ugvw/ugvw.html
index 347824f..426edbb 100644
--- a/content/versions/SNAPSHOT/guides/ugvw/ugvw.html
+++ b/content/versions/SNAPSHOT/guides/ugvw/ugvw.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -5010,7 +5011,7 @@ cssClassUiEvent = DemoObject.CssClassUiEvent.class
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/guides/ugvw/ugvw.pdf
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/guides/ugvw/ugvw.pdf b/content/versions/SNAPSHOT/guides/ugvw/ugvw.pdf
index 7082f17..07e6c79 100644
--- a/content/versions/SNAPSHOT/guides/ugvw/ugvw.pdf
+++ b/content/versions/SNAPSHOT/guides/ugvw/ugvw.pdf
@@ -4,8 +4,8 @@
 << /Title (Wicket Viewer)
 /Creator (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
 /Producer (Asciidoctor PDF 1.5.0.alpha.11, based on Prawn 1.3.0)
-/CreationDate (D:20180213131300+00'00')
-/ModDate (D:20180213131300+00'00')
+/CreationDate (D:20180213223032+00'00')
+/ModDate (D:20180213223032+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/help.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/help.html b/content/versions/SNAPSHOT/help.html
index 4bc94e8..9216f06 100644
--- a/content/versions/SNAPSHOT/help.html
+++ b/content/versions/SNAPSHOT/help.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -320,7 +321,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/migration-notes/migration-notes.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/migration-notes/migration-notes.html b/content/versions/SNAPSHOT/migration-notes/migration-notes.html
index c2ec72f..11a91b8 100644
--- a/content/versions/SNAPSHOT/migration-notes/migration-notes.html
+++ b/content/versions/SNAPSHOT/migration-notes/migration-notes.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -2565,7 +2566,7 @@ isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true</cod
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/articles-and-presentations/articles-and-presentations.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/articles-and-presentations/articles-and-presentations.html b/content/versions/SNAPSHOT/pages/articles-and-presentations/articles-and-presentations.html
index 2383bfe..e17383f 100644
--- a/content/versions/SNAPSHOT/pages/articles-and-presentations/articles-and-presentations.html
+++ b/content/versions/SNAPSHOT/pages/articles-and-presentations/articles-and-presentations.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -419,7 +420,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/books/books.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/books/books.html b/content/versions/SNAPSHOT/pages/books/books.html
index 6147a1b..a69e649 100644
--- a/content/versions/SNAPSHOT/pages/books/books.html
+++ b/content/versions/SNAPSHOT/pages/books/books.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -363,7 +364,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/cheat-sheet/cheat-sheet.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/cheat-sheet/cheat-sheet.html b/content/versions/SNAPSHOT/pages/cheat-sheet/cheat-sheet.html
index 683898a..f249324 100644
--- a/content/versions/SNAPSHOT/pages/cheat-sheet/cheat-sheet.html
+++ b/content/versions/SNAPSHOT/pages/cheat-sheet/cheat-sheet.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -297,7 +298,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/common-use-cases/common-use-cases.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/common-use-cases/common-use-cases.html b/content/versions/SNAPSHOT/pages/common-use-cases/common-use-cases.html
index 000999b..0ec665c 100644
--- a/content/versions/SNAPSHOT/pages/common-use-cases/common-use-cases.html
+++ b/content/versions/SNAPSHOT/pages/common-use-cases/common-use-cases.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -355,7 +356,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/downloadable-presentations/downloadable-presentations.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/downloadable-presentations/downloadable-presentations.html b/content/versions/SNAPSHOT/pages/downloadable-presentations/downloadable-presentations.html
index 4a386d8..44f8ce0 100644
--- a/content/versions/SNAPSHOT/pages/downloadable-presentations/downloadable-presentations.html
+++ b/content/versions/SNAPSHOT/pages/downloadable-presentations/downloadable-presentations.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -304,7 +305,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/how-isis-works/how-isis-works.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/how-isis-works/how-isis-works.html b/content/versions/SNAPSHOT/pages/how-isis-works/how-isis-works.html
index 3cdc217..180b810 100644
--- a/content/versions/SNAPSHOT/pages/how-isis-works/how-isis-works.html
+++ b/content/versions/SNAPSHOT/pages/how-isis-works/how-isis-works.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -301,7 +302,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/icons/icons.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/icons/icons.html b/content/versions/SNAPSHOT/pages/icons/icons.html
index d99693f..11af94c 100644
--- a/content/versions/SNAPSHOT/pages/icons/icons.html
+++ b/content/versions/SNAPSHOT/pages/icons/icons.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -296,7 +297,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/isis-in-pictures/isis-in-pictures.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/isis-in-pictures/isis-in-pictures.html b/content/versions/SNAPSHOT/pages/isis-in-pictures/isis-in-pictures.html
index c967513..e090c7d 100644
--- a/content/versions/SNAPSHOT/pages/isis-in-pictures/isis-in-pictures.html
+++ b/content/versions/SNAPSHOT/pages/isis-in-pictures/isis-in-pictures.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -661,7 +662,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/more-thanks/more-thanks.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/more-thanks/more-thanks.html b/content/versions/SNAPSHOT/pages/more-thanks/more-thanks.html
index d08d52c..aa3296b 100644
--- a/content/versions/SNAPSHOT/pages/more-thanks/more-thanks.html
+++ b/content/versions/SNAPSHOT/pages/more-thanks/more-thanks.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -367,7 +368,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/powered-by/powered-by.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/powered-by/powered-by.html b/content/versions/SNAPSHOT/pages/powered-by/powered-by.html
index cc383ba..3007b86 100644
--- a/content/versions/SNAPSHOT/pages/powered-by/powered-by.html
+++ b/content/versions/SNAPSHOT/pages/powered-by/powered-by.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -695,7 +696,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/screencasts/screencasts-older.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/screencasts/screencasts-older.html b/content/versions/SNAPSHOT/pages/screencasts/screencasts-older.html
index 813f9c5..ea17861 100644
--- a/content/versions/SNAPSHOT/pages/screencasts/screencasts-older.html
+++ b/content/versions/SNAPSHOT/pages/screencasts/screencasts-older.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -649,7 +650,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/screencasts/screencasts.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/screencasts/screencasts.html b/content/versions/SNAPSHOT/pages/screencasts/screencasts.html
index 1bd413c..d052f86 100644
--- a/content/versions/SNAPSHOT/pages/screencasts/screencasts.html
+++ b/content/versions/SNAPSHOT/pages/screencasts/screencasts.html
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -4465,7 +4466,7 @@ table.CodeRay td.code>pre{padding:0}
   <footer class="footer"> 
    <div class="container"> 
     <div class="row"> 
-     <p class="text-center small text-muted"> Copyright © 2010~2017 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
+     <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0. <br> Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation. </p> 
     </div> 
    </div> 
   </footer> 

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-01-login-page.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-01-login-page.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-01-login-page.png
deleted file mode 100644
index 068c3a8..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-01-login-page.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-02-home-page.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-02-home-page.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-02-home-page.png
deleted file mode 100644
index 59c2726..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-02-home-page.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-03-prototyping-menu.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-03-prototyping-menu.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-03-prototyping-menu.png
deleted file mode 100644
index ed85463..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-03-prototyping-menu.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-04-simpleobjects.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-04-simpleobjects.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-04-simpleobjects.png
deleted file mode 100644
index 324083d..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-04-simpleobjects.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-05-simpleobject-list.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-05-simpleobject-list.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-05-simpleobject-list.png
deleted file mode 100644
index 79bfffa..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/010-05-simpleobject-list.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-01-idea-configuration.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-01-idea-configuration.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-01-idea-configuration.png
deleted file mode 100644
index 1ee8280..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-01-idea-configuration.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-02-idea-configuration.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-02-idea-configuration.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-02-idea-configuration.png
deleted file mode 100644
index 99be18b..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/020-02-idea-configuration.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-01-idea-configuration-updated.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-01-idea-configuration-updated.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-01-idea-configuration-updated.png
deleted file mode 100644
index c836f14..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-01-idea-configuration-updated.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-02-updated-app.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-02-updated-app.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-02-updated-app.png
deleted file mode 100644
index c438315..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/030-02-updated-app.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/040-01-idea-configuration-updated.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/040-01-idea-configuration-updated.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/040-01-idea-configuration-updated.png
deleted file mode 100644
index acddc93..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/040-01-idea-configuration-updated.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-01-list-all.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-01-list-all.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-01-list-all.png
deleted file mode 100644
index 1c87cca..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-01-list-all.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-02-view-pet.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-02-view-pet.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-02-view-pet.png
deleted file mode 100644
index 77824ce..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/050-02-view-pet.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-01-owners-menu.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-01-owners-menu.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-01-owners-menu.png
deleted file mode 100644
index 642f9dc..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-01-owners-menu.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-02-owners-list.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-02-owners-list.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-02-owners-list.png
deleted file mode 100644
index db0ec25..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-02-owners-list.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-03-pets-list.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-03-pets-list.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-03-pets-list.png
deleted file mode 100644
index f2b9230..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-03-pets-list.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-04-pet-owner-autoComplete.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-04-pet-owner-autoComplete.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-04-pet-owner-autoComplete.png
deleted file mode 100644
index d301b59..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/060-04-pet-owner-autoComplete.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/domain-model.png
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/domain-model.png b/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/domain-model.png
deleted file mode 100644
index 268e998..0000000
Binary files a/content/versions/SNAPSHOT/pages/tg/images/tutorials/pet-clinic/domain-model.png and /dev/null differ


[4/5] isis-site git commit: ISIS-1813: snapshot for 1.16.1-SNAPSHOT.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/elasticlunr/index.json
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/elasticlunr/index.json b/content/versions/SNAPSHOT/elasticlunr/index.json
index 272397b..fa62285 100644
--- a/content/versions/SNAPSHOT/elasticlunr/index.json
+++ b/content/versions/SNAPSHOT/elasticlunr/index.json
@@ -1 +1 @@
-{"version":"0.9.5","fields":["title","body","description","url"],"ref":"id","documentStore":{"docs":{"372886":{"title":"Rows, full-width cols, and tabs","url":"guides/ugvw/ugvw.html#_rows_full_width_cols_and_tabs","body":"Rows, full-width cols, and tabs  The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column spanning the full width of the page. For the property and collection rows, the column contains a tab group.  This corresponds to the following XML:  You will notice that one of the columns has an unreferencedActions attribute, while one of the tabGroups has a similar unreferencedCollections attribute. This topic is discussed in more detail below. ","description":" The example layout consists of three rows: a row for the object/icon, a row containing a properties, and a row containing collections. In all three cases the row contains a single column s
 panning the full width of the page. For the property and collection rows, the column contains a","id":372886},"2646929":{"title":"Apache Isis vs …​","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_apache-isis-vs","body":"Apache Isis vs …​  Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","description":" Many other frameworks promise rapid application development and provide automatically generated user interfaces, so how do they compare to Apache Isis? ","id":2646929},"3836440":{"title":"Running","url":"guides/dg/dg.html#__dg_ide_intellij_running","body":"Running  Let’s see how to run both the app and the tests. ","description":" Let’s see how to run both the app and the tests. ","id":3836440},"11600575":{"title":"Using Contributions","url":"pages/tg/tg.html#_using_contributions","body":"Using Contributions  One of Apache Isis' most powerful features is the abilit
 y for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel. In Apache Isis' terminology, we say that the domain service action is contributed to the entity.  Any action of a domain service that has a domain entity type as one of its parameter types will (by default) be contributed. If the service action takes more than one argument, or does not have safe semantics, then it will be contributed as an entity action. If the service action has precisely one parameter type (that of the entity) and has safe semantics then it will be contributed either as a collection or as a property (dependent on whether it returns a collection of a scalar).  Why are contributions so useful? Because the service action will match not on the entity type, but also on any of the entity’s supertypes (all the way up to java.lang.Obj
 ect). That means that you can apply the dependency inversion principle to ensure that the modules of your application have acyclic dependencies; but in the UI it can still appear as if there are bidirectional dependencies between those modules. The lack of bidirectional dependencies can help save your app degrading into a big ball of mud.  Finally, note that the layout of contributed actions/collections/properties can be specified using the .layout.json file (and it is highly recommended that you do so). ","description":" One of Apache Isis' most powerful features is the ability for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the \"mixing in\" is done at runtime, within the Apache Isis metamodel","id":11600575},"12196042":{"title":"Tertiary Menu","url":"guides/ugvw/ugvw.html#_tertiary_menu","body":"Tertiary Menu  Domain services' actions can be associated with the te
 rtiary menu using the same @DomainServiceLayout annotation, but be aware that the @DomainServiceLayout#name() attribute will be ignored (there is only one effective menu).  For example, the updateEpochDate(…​) and listAllSettings(…​) actions come from the following service:  Because the number of items on the tertiary menu is expected to be small and most will pertain to the current user, the viewer does not place dividers between actions from different services on the tertiary menu. ","description":" Domain services' actions can be associated with the tertiary menu using the same @DomainServiceLayout annotation, but be aware that the @DomainServiceLayout#name() attribute will be ignored (there is only one effective menu). ","id":12196042},"12649581":{"title":"Mark the version as released","url":"guides/cgcom/cgcom.html#_mark_the_version_as_released","body":"Mark the version as released  In JIRA, go to the administration section for the Apache Isis project and update the ver
 sion as being released.  In the Kanban view this will have the effect of marking all tickets as released (clearing the \"done\" column). ","description":" In JIRA, go to the administration section for the Apache Isis project and update the version as being released. ","id":12649581},"13573617":{"title":"hide…​()","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_hide","body":"hide…​()  The hide…​() supporting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view.  It’s comparatively rare for properties or collections to be imperatively hidden from view, but actions are sometimes hidden or shown visible (as opposed to being just disabled, ie greyed out).  The signature of the supporting method is simply:  Returning true will hide the property, collection or action, returning false leaves it visible.  For example, to hide an action:  Or, to hide a property: ","description":" The hide…​() sup
 porting method is called for properties, collections and actions. It allows the property/collection to be completely hidden from view. ","id":13573617},"14290952":{"title":"Vetoing Visibility","url":"guides/htg.html#_ugbtb_hints-and-tips_vetoing-visibility","body":"Vetoing Visibility  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 ","description":" eg if included an addon such as auditing or security. ","id":14290952},"14971197":{"title":"Suppressing 'remember me'","url":"guides/ugvw/ugvw.html#_ugvw_configuration-properties_suppressing-remember-me","body":"Suppressing 'remember me'  The 'remember me' checkbox on the login page can be suppressed, if required, by setting a configuration flag. ","description":" The 'remember me' checkbox on the login page can be suppressed, if required, by se
 tting a configuration flag. ","id":14971197},"16629694":{"title":"allowLateRegistration","url":"migration-notes/migration-notes.html#__code_allowlateregistration_code","body":"allowLateRegistration  One possible issue is that (as per ISIS-830) the EventBusService is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domain services initializing themselves can be posted on the event bus for subscribers. The typical case for such lifecycle events to occur is from domain services that seed reference data; one such example can be found in the (non-ASF) Incode Platform's security module.  In previous releases, the ordering of initialization for the EventBusService was undefined (but would typically be towards the \"end\" of the list of services. What this meant in practice is that it generally didn’t matter whether (domain service) subscribers were initialized before or after seed services.  Now, though, because the EventBu
 sService is initialized early on, it proactively checks that all subscribers have been registered before any event posts occur (so that no events get missed). If any subscriber attempts to register after at least one event has been posted, then the service will fail fast and the framework will not start. The error looks something like:  To ensure that subscriber domain services are initialized before \"seed\" domain services, the @DomainServiceLayout#menuOrder() attribute can be used. Normally this attribute is just used to order UI-visible services on the menu bars, but it also is used internally to sequence the internal list of services being initialized.  Alternatively, you can disable this checking within the EventBusService using:  If you do that, be aware that not all subscribers may not receive some events generated by other domain services.  For more details, see the EventBusService man page. ","description":" One possible issue is that (as per ISIS-830) the EventBusService 
 is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domain services initializing themselves can be posted on the event bus for subscribers. The typical case for such","id":16629694},"17000573":{"title":"ObjectCreatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectCreatedEvent","body":"ObjectCreatedEvent  Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method.  ObjectCreatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when an object is first instantiated using the DomainObjectContainer's #newTransientInstance(…​) method. ","id":17000573},"17618894":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_20","body":"New Feature ","description":"","id":17618894},"17724516":{"title":"Multi-select act
 ion parameters","url":"guides/ugfun/ugfun.html#_multi_select_action_parameters","body":"Multi-select action parameters  As well as scalar values, action parameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided.  For example, suppose we want to \"tag\" or \"label\" an object: ","description":" As well as scalar values, action parameters can also be collections. For this to be valid, a choices or autoComplete supporting method must be provided. ","id":17724516},"18445041":{"title":"Verifying Releases","url":"downloads.html#_verifying_releases","body":"Verifying Releases ","description":"","id":18445041},"19254915":{"title":"API & Implementation","url":"guides/rgsvc/rgsvc.html#_api_implementation_7","body":"API & Implementation  The CommandContext request-scoped service defines the following very simple API:  This class (o.a.i.applib.services.CommandContext) is also the default implementation. Under normal circumstances ther
 e shouldn’t be any need to replace this implementation with another.  The Command type referenced above is in fact an interface, defined as: ","description":" The CommandContext request-scoped service defines the following very simple API: ","id":19254915},"21190750":{"title":"Run the archetype","url":"pages/tg/tg.html#_run_the_archetype","body":"Run the archetype  Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note:  Run the simpleapp archetype to build an empty Isis application. With the *nix bash shell, use:  Adjust as necessary if using Windows cmd.exe or Powershell.  This will generate the app in a petclinic directory. Move the contents back: ","description":" Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a \"git checkout\" note: ","id":21190750},"21212015":{"title":"Key features","url":"pages/powered-by/powered-by.html#_key_features","body":"Key feature
 s ","description":"","id":21212015},"21857601":{"title":"Other Guides","url":"guides/cgcom/cgcom.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are:  This guide provides guidance for Apache Isis' own committers. ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":21857601},"23125949":{"title":"Editing","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_editing","body":"Editing ","description":"","id":23125949},"23524101":{"title":"Collections","url":"guides/ugvw/ugvw.html#_collections","body":"Collections  In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML:  As with properties, actions can be associated with collections; this indicates that
  they should be rendered in the collection’s header. ","description":" In the final row the collections are placed in tabs, simply one collection per tab. This corresponds to the following XML: ","id":23524101},"26509816":{"title":"Commit changes","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_commit-changes","body":"Commit changes  Commit any changes from the preceding steps: ","description":" Commit any changes from the preceding steps: ","id":26509816},"27806498":{"title":"renderedAsDayBefore()","url":"guides/rgant/rgant.html#_rgant-ParameterLayout_renderedAsDayBefore","body":"renderedAsDayBefore()  The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties.  This behaviour might at first glance appear odd, but the rationale is to support the use case of a 
 sequence of instances that represent adjacent intervals of time. In such cases there would typically be startDate and endDate properties, eg for all of Q2. Storing this as a half-closed interval — eg [1-Apr-2015, 1-July-2015) — can substantially simplify internal algorithms; the endDate of one interval will correspond to the startDate of the next.  However, from an end-user perspective the requirement may be to render the interval as a fully closed interval; eg the end date should be shown as 30-Jun-2015.  This attribute therefore bridges the gap; it presents the information in a way that makes sense to an end-user, but also stores the domain object in a way that is easy work with internally.  For example: ","description":" The renderedAsDayBefore() attribute applies only to date parameters whereby the date will be rendered as the day before the value actually held in the domain object. It is ignored for parameters of other types. This attribute is also supported for properties.
  ","id":27806498},"31312523":{"title":"Declarative style","url":"guides/htg.html#_declarative_style_3","body":"Declarative style  To render an object with a particular CSS, use @DomainObjectLayout#cssClass().  When the domain object is rendered on its own page, this CSS class will appear on a top-level <div>. Or, when the domain object is rendered as a row in a collection, then the CSS class will appear in a <div> wrapped by the <tr> of the row.  One possible use case would be to render the most important object types with a subtle background colour: Customers shown in light green, or Orders shown in a light pink, for example. ","description":" To render an object with a particular CSS, use @DomainObjectLayout#cssClass(). ","id":31312523},"31857620":{"title":"Interacting with the services","url":"guides/rgsvc/rgsvc.html#_interacting_with_the_services","body":"Interacting with the services  Typically domain objects will have little need to interact with the CommandContext and Command
  directly; what is more useful is that these are persisted in support of the various use cases identified above.  One case however where a domain object might want to obtain the Command is to determine whether it has been invoked in the foreground, or in the background. It can do this using the getExecutedIn() method:  Although not often needed, this then allows the domain object to access the Command object through the CommandContext service. To expand th above example:  If run in the background, it might then notify the user (eg by email) if all work is done.  This leads us onto a related point, distinguishing the current effective user vs the originating \"real\" user. When running in the foreground, the current user can be obtained from the UserService, using:  If running in the background, however, then the current user will be the credentials of the background process, for example as run by a Quartz scheduler job.  The domain object can still obtain the original (\"effective\"
 ) user that caused the job to be created, using: ","description":" Typically domain objects will have little need to interact with the CommandContext and Command directly; what is more useful is that these are persisted in support of the various use cases identified above. ","id":31857620},"31966407":{"title":"Icons","url":"guides/htg.html#_icons","body":"Icons  Action icons can be specified in several ways.  One option is to use the @ActionLayout#cssClassFa(). For example:  Alternatively, you can specify these hints dynamically in the Xxx.layout.xml for the entity:  Rather than annotating every action with @ActionLayout#cssClassFa() and @ActionLayout#cssClass() you can instead specify the UI hint globally using regular expressions. Not only does this save a lot of boilerplate/editing, it helps ensure consistency across all actions.  To declare fa classes globally, use the configuration property isis.reflector.facet.cssClassFa.patterns (a comma separated list of key:value pairs).  F
 or example:  Here:  For example, \"fa-plus\" is applied to all action members called \"newXxx\" ","description":" Action icons can be specified in several ways. ","id":31966407},"36734123":{"title":"Bug","url":"release-notes/release-notes.html#_bug_8","body":"Bug ","description":"","id":36734123},"39248326":{"title":"Runtime vs Noop implementation","url":"guides/rgfis/rgfis.html#_runtime_vs_noop_implementation","body":"Runtime vs Noop implementation  The framework provides two implementations:  The …​Default implementation takes priority over the …​Noop implementation. ","description":" The framework provides two implementations: ","id":39248326},"39290887":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_22","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","description":" The core framework provides a default implementation of this se
 rvice (o.a.i.core.metamodel.services.container.DomainObjectContainerDefault). ","id":39290887},"42240053":{"title":"Screenshots","url":"guides/ugvw/ugvw.html#_screenshots_9","body":"Screenshots  The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header:  A custom brand logo (typically larger) can also be specified for the signin page: ","description":" The screenshot below shows the Isis addons example todoapp (not ASF) with a 'brand logo' image in its header: ","id":42240053},"44483327":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_17","body":"New Feature ","description":"","id":44483327},"45128293":{"title":"getConfigurationProperties()","url":"guides/rgcms/rgcms.html#__rgcms_classes_AppManifest-bootstrapping_api_getConfigurationProperties","body":"getConfigurationProperties()  This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the g
 etFixtures() method, discussed above: ","description":" This method allow arbitrary other configuration properties to be overridden. One common use case is in conjunction with the getFixtures() method, discussed above: ","id":45128293},"57327287":{"title":"cssClassFa()","url":"guides/rgant/rgant.html#_rgant-ViewModelLayout_cssClassFa","body":"cssClassFa()  The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon.  These attribute can also be applied to domain objects to specify the object’s icon, and to actions to specify an icon for the action’s representation as a button or menu item.  If necessary the icon specified can be overridden by a particular object instance using the iconName() method.  For example:  There can be multiple \"fa-\" classes, eg to mirror or rotate the icon. There is no need to include the mandatory fa \"marker\" CSS class; it will be automatically added to the list. The fa- prefix ca
 n also be omitted from the class names; it will be prepended to each if required.  The related cssClassFaPosition() attribute is currently unused for domain objects; the icon is always rendered to the left. ","description":" The cssClassFa() attribute is used to specify the name of a Font Awesome icon name, to be rendered as the domain object’s icon. ","id":57327287},"62314289":{"title":"Menu Bars Layout","url":"guides/ugvw/ugvw.html#_ugvw_menubars-layout","body":"Menu Bars Layout ","description":"","id":62314289},"64932464":{"title":"Other Guides","url":"guides/ugtst/ugtst.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","description":" Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":64932464},"66604001":{"title":"@Program
 matic","url":"guides/rgant/rgant.html#_rgant-Programmatic","body":"@Programmatic ","description":"","id":66604001},"68441589":{"title":"License headers","url":"guides/cgcom/cgcom.html#__cgcom_cutting-a-release_releasing-core_license-headers","body":"License headers  The Apache Release Audit Tool RAT (from the Apache Creadur project) checks for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions.  To run the RAT tool, use:  where rat.numUnapprovedLicenses property is set to a high figure, temporarily overriding the default value of 0. This will allow the command to run over all submodules, rather than failing after the first one. The command writes out a target\\rat.txt for each submodule. missing license notes are indicated using the key !???. The for command collates all the errors.  Investigate and fix any reported violations, typically by either:  To add missing headers, use the groovy scrip
 t addmissinglicenses.groovy (in the scripts directory) to automatically insert missing headers for certain file types. The actual files checked are those with extensions specified in the line def fileEndings = [\".java\", \".htm\"]:  (If the -x is omitted then the script is run in \"dry run\" mode). Once you’ve fixed all issues, confirm once more that apache-rat-plugin no longer reports any license violations, this time leaving the rat.numUnapprovedLicenses property to its default, 0: ","description":" The Apache Release Audit Tool RAT (from the Apache Creadur project) checks for missing license header files. The parent pom.xml of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions. ","id":68441589},"73703450":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_29","body":"New Feature ","description":"","id":73703450},"74705826":{"title":"How to implement a spellchecker?","url":"guides/htg.html#_ugbtb_hints-and-tips_how
 -to-implement-a-spellchecker","body":"How to implement a spellchecker?  From this thread on the Apache Isis users mailing list:  One way to implement is to use the event bus:  if if the change is made through an edit, you can use @Property#domainEvent().  You’ll need some way to know which fields should be spell checked. Two ways spring to mind:  And you’ll (obviously) also need some sort of spell checker implementation to call. ","description":" From this thread on the Apache Isis users mailing list: ","id":74705826},"75054401":{"title":"Supporting Method Prefixes","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes","body":"Supporting Method Prefixes  Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members.  This association is performed by name matching. Thus, a property called \"firstName\", derived from 
 a method getFirstName() may have supporting methods hideFirstName(), disableFirstName() and validateFirstName(). Supporting methods are, therefore, each characterized by their own particular prefix.  The table below lists the method prefixes that are recognized as part of Apache Isis' default programming model. ","description":" Supporting methods are those that are associated with properties, collections and actions, providing additional imperative business rule checking and behaviour to be performed when the user interacts with those object members. ","id":75054401},"77231561":{"title":"Interaction Execution","url":"guides/rgcms/rgcms.html#_rgcms_schema-ixn","body":"Interaction Execution  The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits.  Each execution identifies the target objec
 t, the member to invoke, and the arguments. It also captures metrics about the execution, and the result of the execution (eg return value of an action invocation). ","description":" The interaction (\"ixn\") schema defines the serialized form of an action invocation or a property edit. In fact, it actually defines a call-graph of such executions for those cases where the WrapperFactory is used to execute sub-actions/property edits. ","id":77231561},"78112488":{"title":"Screencast","url":"guides/ugvw/ugvw.html#_screencast","body":"Screencast  This screencast describes the feature. ","description":" This screencast describes the feature. ","id":78112488},"78624086":{"title":"Other Guides","url":"guides/ugsec/ugsec.html#_other_guides","body":"Other Guides  Apache Isis documentation is broken out into a number of user, reference and \"supporting procedures\" guides.  The user guides available are:  The reference guides are:  The remaining guides are: ","description":" Apache Isis docum
 entation is broken out into a number of user, reference and \"supporting procedures\" guides. ","id":78624086},"80534397":{"title":"ContentMappingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_ContentMappingService","body":"ContentMappingService  The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header.  See ContentNegotiationService for further discussion. ","description":" The ContentMappingService supports the (default implementation of the) ContentNegotiationService enabling the RestfulObjects viewer to represent domain objects in some other format as specified by the HTTP Accept header. ","id":80534397},"83803344":{"title":"MessageService","url":"guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_MessageService","body":"MessageService  The MessageService allows domain objects to raise informat
 ion, warning or error messages. These messages can either be simple strings, or can be translated. ","description":" The MessageService allows domain objects to raise information, warning or error messages. These messages can either be simple strings, or can be translated. ","id":83803344},"83933647":{"title":"Persistence Concerns","url":"guides/ugbtb/ugbtb.html#_persistence_concerns","body":"Persistence Concerns ","description":"","id":83933647},"85931482":{"title":"Task","url":"release-notes/release-notes.html#_task_24","body":"Task ","description":"","id":85931482},"87271564":{"title":"2004:","url":"pages/articles-and-presentations/articles-and-presentations.html#_2004","body":"2004: ","description":"","id":87271564},"90561824":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_8","body":"Wicket Viewer ","description":"","id":90561824},"90935214":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_10","body":"Wicket Viewer 
 ","description":"","id":90935214},"91902412":{"title":"The issue in more detail","url":"guides/ugodn/ugodn.html#_the_issue_in_more_detail","body":"The issue in more detail  Consider these entities (yuml.me/b8681268):  In the course of a transaction, the Agreement entity is loaded into memory (not necessarily modified), and then new AgreementRoles are associated to it.  All these entities implement Comparable using ObjectContracts, and the implementation of AgreementRole's (simplified) is:  while Agreement's is implemented as:  and Party's is similarly implemented as:  DataNucleus’s persistence-by-reachability algorithm adds the AgreementRole instances into a SortedSet, which causes AgreementRole#compareTo() to fire:  In other words, in figuring out whether AgreementRole requires the persistence-by-reachability algorithm to run, it causes the adjacent associated entity Party to also be retrieved. ","description":" Consider these entities (yuml.me/b8681268): ","id":91902412},"924676
 60":{"title":"API and Usage","url":"guides/ugtst/ugtst.html#_ugtst_fixture-scripts_api-and-usage","body":"API and Usage  There are two main parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class:  Let’s look at FixtureScripts domain service in more detail first. ","description":" There are two main parts to using fixture scripts: the FixtureScripts domain service class, and the FixtureScript view model class: ","id":92467660},"96583162":{"title":"Configure toolchains plugin","url":"guides/cgcom/cgcom.html#_configure_toolchains_plugin","body":"Configure toolchains plugin  Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains plugin is configured, as described in the contributors' guide. ","description":" Apache Isis releases are built using Java 7, enforced using the maven toolchains plugin. Ensure that Java 7 is installed and the toolchains
  plugin is configured, as described in the contributors' guide. ","id":96583162},"99090360":{"title":"Running the App","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_simpleapp-archetype_running-the-app","body":"Running the App  The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection.  Once you’ve built the app, you can run the WAR in a variety of ways. ","description":" The simpleapp archetype generates a single WAR file, configured to run both the Wicket viewer and the Restful Objects viewer. The archetype also configures the DataNucleus/JDO Objectstore to use an in-memory HSQLDB connection. ","id":99090360},"100682258":{"title":"Update dependencies","url":"guides/cgcom/cgcom.html#_update_dependencies","body":"Update dependencies  With the release complete, now is a good time to bump versions of dependenc
 ies (so that there is a full release cycle to identify any possible issues).  You will probably want to create a new JIRA ticket for these updates (or if minor then use the \"catch-all\" JIRA ticket raised earlier for the next release). ","description":" With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues). ","id":100682258},"102347041":{"title":"Bug","url":"release-notes/release-notes.html#_bug_10","body":"Bug ","description":"","id":102347041},"104167755":{"title":"How to implement a spellchecker?","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-implement-a-spellchecker","body":"How to implement a spellchecker?  From this thread on the Apache Isis users mailing list:  One way to implement is to use the event bus:  if if the change is made through an edit, you can use @Property#domainEvent().  You’ll need some way to know which fields should be spell checked. Two ways spr
 ing to mind:  And you’ll (obviously) also need some sort of spell checker implementation to call. ","description":" From this thread on the Apache Isis users mailing list: ","id":104167755},"105480253":{"title":"Visitor","url":"guides/ugbtb/ugbtb.html#__code_visitor_code","body":"Visitor  More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisiting.Visitor:  You can then create your custom validator by subclassing MetaModelValidatorComposite and adding the visiting validator:  If you have more than one rule then each can live in its own visitor. ","description":" More often than not, you’ll want to visit every element in the metamodel, and so for this you can instead subclass from MetaModelValidatorVisiting.Visitor: ","id":105480253},"106558909":{"title":"contributedAs()","url":"guides/rgant/rgant.html#_rgant-ActionLayout_contributedAs","body":"contributedAs()  For a domain service action tha
 t can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association (ie a property or collection).  The distinction between property or collection is automatic: if the action returns a java.util.Collection (or subtype) then the action is contributed as a collection; otherwise it is contributed as a property.  For a domain service action to be contributed, the domain services must have a nature nature of either VIEW or VIEW_CONTRIBUTIONS_ONLY, and the action must have safe action semantics, and takes a single argument, namely the contributee domain object.  For example:  It’s also possible to use the attribute to suppress the action completely:  In such cases, though, it would probably make more sense to annotate the action as either hidden or indeed @Programmatic. ","description":" For a domain service action that can be contributed, the contributedAs() attribute determines how it is contributed: as an action or as an association
  (ie a property or collection). ","id":106558909},"106606865":{"title":"Using the Wicket Viewer","url":"guides/rgcfg/rgcfg.html#_using_the_wicket_viewer","body":"Using the Wicket Viewer  Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept:  Wicket’s mechanism for specifying the \"configuration\" is to use a context parameter in web.xml; Apache Isis automatically infers its own deployment type from this. In other words: ","description":" Most of the you’re likely to run Apache Isis using the Wicket viewer. In this case Apache Isis' \"deployment type\" concept maps to Wicket’s \"configuration\" concept: ","id":106606865},"108815435":{"title":"unchanging()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_unchanging","body":"unchanging()  The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when othe
 r properties of the object do change.  Setting this attribute to true is used as a hint to the viewer to not redraw 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.  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.  For example: ","description":" The unchanging() attribute is used to indicate that the value held by the property never changes over time, even when other properties of the object do change. ","id":108815435},"109833874":{"title":"Persistable","url":"guides/rgcms/rgcms.html#_rgcms_classes_mixins_Persistable","body":"Persistable  All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a develo
 per you do not need to write any code to obtain the mixins that contribute to this interface.  These mixin properties/actions are all associated with the \"Metadata\" fieldset. A number of other mixins also contribute properties or actions to the \"Metadata\" fieldset. ","description":" All domain entities automatically implement the DataNucleus Persistable role interface as a result of the enhancer process (the fully qualified class name is org.datanucleus.enhancement.Persistable). So as a developer you do not need to write any code to obtain the mixins that contribute to this interface. ","id":109833874},"112375674":{"title":"Auditing","url":"migration-notes/migration-notes.html#_auditing","body":"Auditing  The AuditingService SPI service has been deprecated, instead replaced by the AuditerService.  There can be more than one implementation of this new SPI, and a framework-provided implementation (AuditerServiceLogging) will log to a file. The (non-ASF) Incode Platform's audit mod
 ule also implements the new SPI. ","description":" The AuditingService SPI service has been deprecated, instead replaced by the AuditerService. ","id":112375674},"113098816":{"title":"DataNucleus Object Store","url":"guides/htg.html#_datanucleus_object_store","body":"DataNucleus Object Store ","description":"","id":113098816},"114685873":{"title":"Usage","url":"guides/rgsvc/rgsvc.html#_usage_19","body":"Usage  To indicate that an action invocation should be published, annotate it with the @Action#publishing() annotation.  To indicate that an property edit should be published, annotate it with the @Property#publishing() annotation.  To indicate that a changed object should be published is to annotate it with the @DomainObject#publishing() annotation. ","description":" To indicate that an action invocation should be published, annotate it with the @Action#publishing() annotation. ","id":114685873},"115229271":{"title":"Domain Entities","url":"guides/ugfun/ugfun.html#_ugfun_programming
 -model_domain-entities","body":"Domain Entities  Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects.  Domain entities are generally decorated with both DataNucleus and Apache Isis annotations. Let’s look at some of the most commonly-used annotations.  To start with, entities are flagged as being \"persistence capable\", indicating how JDO/DataNucleus should manage their identity:  All domain entities will have some sort of mandatory key properties. The example below is a very simple case, where the entity is identified by a name property:  It’s also common for domain entities to have queries annotated on them. These are used by repository domain services to query for instances of the entity:  DataNucleus provides several APIs for defining queries, including enti
 rely programmatic and type-safe APIs; but JDOQL is very similar to SQL and so easily learnt.  The corresponding repository method for the above query is: ","description":" Entities are persistent domain objects, with their persistence handled by JDO/DataNucleus. As such, they are mapped to a persistent object store, typically an RDBMS, with DataNucleus taking care of both lazy loading and also the persisting of modified (\"dirty\") objects. ","id":115229271},"117553409":{"title":"Object Icon","url":"guides/ugfun/ugfun.html#_object_icon","body":"Object Icon  The icon is often the same for all instances of a particular class, and is picked up by convention.  It’s is also possible for an individual instance to return a custom icon, typically so that some significant state of that domain object is represented. For example, a custom icon could be used to represent a shipped order, say, or an overdue library loan. ","description":" The icon is often the same for all instances of a parti
 cular class, and is picked up by convention. ","id":117553409},"121574190":{"title":"Related Services","url":"guides/rgsvc/rgsvc.html#_related_services_18","body":"Related Services  The ActionInteractionContext service allows bulk actions to co-ordinate with each other.  The QueryResultsCache is useful for caching the results of expensive method calls. ","description":" The ActionInteractionContext service allows bulk actions to co-ordinate with each other. ","id":121574190},"121879267":{"title":"Wicket Viewer","url":"release-notes/release-notes.html#_wicket_viewer_2","body":"Wicket Viewer ","description":"","id":121879267},"122762699":{"title":"Contributee","url":"guides/rgcms/rgcms.html#_rgcms_classes_contributee","body":"Contributee  The interfaces listed in this chapter act as contributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","description":" The interfaces listed in this chapter act as c
 ontributees; they allow domain services to contribute actions/properties/collections to any domain objects that implement these interfaces. ","id":122762699},"125299345":{"title":"Example","url":"guides/rgant/rgant.html#_example_2","body":"Example  This example is taken from the (non-ASF) Isis addons' todoapp: ","description":" This example is taken from the (non-ASF) Isis addons' todoapp: ","id":125299345},"125961908":{"title":"Do it!","url":"pages/tg/tg.html#_do_it","body":"Do it! ","description":"","id":125961908},"134804772":{"title":"How to handle void/null results","url":"guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_how-to-handle-void-and-null-results","body":"How to handle void/null results  From this thread on the Apache Isis users mailing list:  One way to implement this idea is to provide a custom implementation of the RoutingService SPI domain service. The default implementation will either return the current object (if not null), else the home page (as defined by @HomeP
 age) if one exists.  The following custom implementation refines this to use the breadcrumbs (available in the Wicket viewer) to return the first non-deleted domain object found in the list of breadcrumbs:  Note that the above implementation uses Java 8, so if you are using Java 7 then you’ll need to backport accordingly. ","description":" From this thread on the Apache Isis users mailing list: ","id":134804772},"148135206":{"title":"Layout Metadata Reader (deprecated)","url":"guides/ugbtb/ugbtb.html#_ugbtb_programming-model_layout-metadata-reader","body":"Layout Metadata Reader (deprecated)  The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layouts from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","description":" The metadata for domain objects is obtained both annotations and files. There is also deprecated support for reading layouts
  from .layout.json files. This service provides an SPI (and default implementation) for reading layouts defined in this fashion. ","id":148135206},"153666205":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_17","body":"Implementation  The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","description":" The core framework provides a default implementation of this service (o.a.i.core.metamodel.services.title.TitleServiceDefault). ","id":153666205},"155655500":{"title":"@PrimaryKey (javax.jdo)","url":"guides/rgant/rgant.html#_rgant-PrimaryKey","body":"@PrimaryKey (javax.jdo) ","description":"","id":155655500},"158033412":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_27","body":"SPI  The SPI defined by the service is: ","description":" The SPI defined by the service is: ","id":158033412},"158069558":{"title":"Usability: Defaults","url":"pages/tg/tg.html#_usability_defaults","body":
 "Usability: Defaults  Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","description":" Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app. ","id":158069558},"158897592":{"title":"Refactoring","url":"guides/dg/dg.html#__dg_ide_intellij_hints-and-tips_refactoring","body":"Refactoring  Loads of good stuff on the Refactor menu; most used are:  If you can’t remember all those shortcuts, just use ctrl-shift-alt-T (might want to rebind that to something else!) and get a context-sensitive list of refactorings available for the currently selected object ","description":" Loads of good stuff on the Refactor menu; most used are: ","id":158897592},"159072030":{"title":"(non-ASF) Incode Platform","url":"migration-notes/migration-notes.html#_migration-notes_1.14.0-to-1.15.0_incode-platform","b
 ody":"(non-ASF) Incode Platform  The various (non-ASF) Isis Addons and Incode Catalog have also been combined into a single \"Incode Platform\".  While each module can still be consumed individually, the new platform versions consistently (a change in any one module will result in a re-release of all). This should make these modules easier to consume, and easier to maintain/develop.  All the modules remain open source, still licensed under the ASF v2.0 license.  As of this release, none of the groupIds or artifactIds have changed. They will be rationalized/made consistent in a future release; most probably to coincide with v2.0.0 of the framework. ","description":" The various (non-ASF) Isis Addons and Incode Catalog have also been combined into a single \"Incode Platform\". ","id":159072030},"160872749":{"title":"Related Services","url":"guides/rgfis/rgfis.html#_related_services","body":"Related Services  The default implementation of ContentNegotiationService delegates to ContentM
 appingService (if present) to convert domain entities into a stable form (eg DTO).  The ContentNegotiationService is itself called by the (default implementation of) RepresentationService. ","description":" The default implementation of ContentNegotiationService delegates to ContentMappingService (if present) to convert domain entities into a stable form (eg DTO). ","id":160872749},"163456888":{"title":"Dependency upgrade","url":"release-notes/release-notes.html#_dependency_upgrade_9","body":"Dependency upgrade ","description":"","id":163456888},"163915714":{"title":"web.xml","url":"migration-notes/migration-notes.html#_web_xml","body":"web.xml  In the web.xml, the \"isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restfulobjects.properties will both be loaded if present (but neither need be present). ","description":" In the web.xml, the \"isis.viewers\" context-param is now ignored. Instead the viewer_wicket.properties and viewer_restful
 objects.properties will both be loaded if present (but neither need be present). ","id":163915714},"165602306":{"title":"GridLoaderService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridLoaderService","body":"GridLoaderService  The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","description":" The GridLoaderService provides the ability to load the XML layout (grid) for a domain class. ","id":165602306},"165750333":{"title":"loaded()","url":"guides/rgcms/rgcms.html#_rgcms_methods_lifecycle_loaded","body":"loaded()  The loaded() lifecycle callback method is called when a (persistent) object has just been loaded from the object store. ","description":" The loaded() lifecycle callback method is called when a (persistent) object has just been loaded from the object store. ","id":165750333},"166045728":{"title":"Sanity Check","url":"guides/cgcom/cgcom.html#_sanity_check_2","body":"Sanity Check  Ensure that the framework builds
  ok using the same command that your CI server is set up to execute (see section above). ","description":" Ensure that the framework builds ok using the same command that your CI server is set up to execute (see section above). ","id":166045728},"166899251":{"title":"Installing and Setting up","url":"guides/dg/dg.html#__dg_ide_intellij_installing","body":"Installing and Setting up  This section covers installation and setup. These notes/screenshots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","description":" This section covers installation and setup. These notes/screenshots were prepared using IntelliJ Community Edition 14.1.x, but are believed to be compatible with more recent versions/other editions of the IDE. ","id":166899251},"167039338":{"title":"Task","url":"release-notes/release-notes.html#_task_14","body":"Task ","description":"","id":167039338},"169081251":{"title":"Interact
 ion","url":"guides/rgsvc/rgsvc.html#__code_interaction_code","body":"Interaction  The public API of the Interaction class consists of:  This class is concrete (is also the implementation). ","description":" The public API of the Interaction class consists of: ","id":169081251},"174738887":{"title":"Related functionality","url":"guides/ugvw/ugvw.html#_related_functionality_2","body":"Related functionality  The Recent Pages also lists recently visited pages, selected from a drop-down. ","description":" The Recent Pages also lists recently visited pages, selected from a drop-down. ","id":174738887},"175028546":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_5","body":"Implementation  The framework provides a default implementation of this service, namely GridServiceDefault. ","description":" The framework provides a default implementation of this service, namely GridServiceDefault. ","id":175028546},"175197970":{"title":"Performance tuning","url":"pages/tg/tg.h
 tml#_performance_tuning","body":"Performance tuning  The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request.  This can be helpful for \"naive\" code which would normally make the same query within a loop. ","description":" The QueryResultsCache (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request. ","id":175197970},"175636232":{"title":"RepositoryService","url":"guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService","body":"RepositoryService  The RepositoryService collects together methods for creating, persisting and searching for entities from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore.  You can use it during prototyping to write naive queries (find all rows, then filter using the Guava Predicate API, or you can use it to call JDO named queries using JDOQL.  As an alternative, you could also use JDO
  typesafe queries through the IsisJdoSupport service. ","description":" The RepositoryService collects together methods for creating, persisting and searching for entities from the underlying persistence store. It acts as an abstraction over the JDO/DataNucleus objectstore. ","id":175636232},"176767338":{"title":"Command and Events","url":"guides/rgsvc/rgsvc.html#__rgsvc_intro_commands-and-events","body":"Command and Events  A good number of the domain services manage the execution of action invocations/property edits, along with the state of domain objects that are modified as a result of these. These services capture information which can then be used for various purposes, most notably for auditing or for publishing events, or for deferring execution such that the execution be performed in the background at some later date.  The diagram below shows how these services fit together. The outline boxes are services while the coloured boxes represent data structures - defined in the ap
 plib and therefore accessible to domain applications - which hold various information about the executions.  To explain:  Implementations of CommandService can use the Command#getMemento() method to obtain a XML equivalent of that Command, reified using the cmd.xsd schema. This can be converted back into a CommandDto using the CommandDtoUtils utility class (part of the applib).  Similarly, implementations of PublisherService can use the InteractionDtoUtils utility class to obtain a InteractionDto representing the interaction, either just for a single execution or for the entire call-graph. This can be converted into XML in a similar fashion.  Likewise, the PublishedObjects class passed to the PublisherService at the end of the interaction provides the PublishedObjects#getDto() method which returns a ChangesDto instance. This can be converted into XML using the ChangesDtoUtils utility class.  One final point: multiple PublisherService implementations are supported because different i
 mplementations may have different responsibilities. For example, the (non-ASF) Incode Platform's publishmq module is responsible for publishing messages onto an ActiveMQ event bus, for inter-system communication. However, the SPI can also be used for profiling; each execution within the call-graph contains metrics of the number of objects loaded or modified as a result of that execution, and thus could be used for application profiling. The framework provides a default PublisherServiceLogging implementation that logs this using SLF4J. ","description":" A good number of the domain services manage the execution of action invocations/property edits, along with the state of domain objects that are modified as a result of these. These services capture information which can then be used for various purposes, most notably for auditing or for publishing events","id":176767338},"178125062":{"title":"domainEvent()","url":"guides/rgant/rgant.html#_rgant-Action_domainEvent","body":"domainEvent(
 )  Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain object. In the cases of the domain object’s actions, the events that are fired are:  Subscribers subscribe through the EventBusService using either Guava or Axon Framework annotations and can influence each of these phases.  By default the event raised is ActionDomainEvent.Default. For example:  The domainEvent() attribute allows a custom subclass to be emitted allowing more precise subscriptions (to those subclasses) to be defined instead. This attribute is also supported for collections and properties.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a domain object (or list of domain objects) is to be rendered, the framework fires off multiple domain events for every property, collection and action of the domain objec
 t. In the cases of the domain object’s actions, the events that are fired are: ","id":178125062},"180783343":{"title":"TranslatableException","url":"guides/ugbtb/ugbtb.html#__code_translatableexception_code","body":"TranslatableException  Another mechanism by which messages can be rendered to the user are as the result of exception messages thrown and recognized by an ExceptionRecognizer.  In this case, if the exception implements TranslatableException, then the message will automatically be translated before being rendered. The TranslatableException itself takes the form: ","description":" Another mechanism by which messages can be rendered to the user are as the result of exception messages thrown and recognized by an ExceptionRecognizer. ","id":180783343},"183226640":{"title":"updatedLifecycleEvent()","url":"guides/rgant/rgant.html#_rgant-DomainObject_updatedLifecycleEvent","body":"updatedLifecycleEvent()  Whenever a (persistent) domain object has been modified and has been upd
 ated in the database, an \"updated\" lifecycle event is fired.  Subscribers subscribe through the EventBusService and can use the event to obtain a reference to the domain object.  By default the event raised is ObjectUpdatedEvent.Default. For example:  The purpose of the updatedLifecycleEvent() attribute is to allows a custom subclass to be emitted instead. A similar attribute is available for other lifecycle events.  For example:  The benefit is that subscribers can be more targeted as to the events that they subscribe to. ","description":" Whenever a (persistent) domain object has been modified and has been updated in the database, an \"updated\" lifecycle event is fired. ","id":183226640},"188123644":{"title":"2013","url":"pages/articles-and-presentations/articles-and-presentations.html#_2013","body":"2013 ","description":"","id":188123644},"189180810":{"title":"HoldsUpdatedAt","url":"guides/rgcms/rgcms.html#_rgcms_classes_roles_HoldsUpdatedAt","body":"HoldsUpdatedAt  The HoldsU
 pdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction.  The interface is defined as:  The current time is obtained from the ClockService.  Entities that implement this interface often also implement HoldsUpdatedBy role interface; as a convenience the Timestampable interface combines the two roles. ","description":" The HoldsUpdatedAt role interface allows the (framework-provided) TimestampService to update each object with the current timestamp whenever it is modified in a transaction. ","id":189180810},"191180113":{"title":"persistence.xml","url":"guides/ugodn/ugodn.html#_ugodn_configuring_persistence-xml","body":"persistence.xml  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 i
 s extremely simply, specifying just the name of the \"persistence unit\".  Here’s the one provided by the SimpleApp archetype:  Normally all one needs to do is to change the persistence-unit name.  See DataNucleus' documentation on persistence.xml to learn more. ","description":" 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","id":191180113},"193219460":{"title":"API","url":"guides/rgsvc/rgsvc.html#_rgsvc_metadata-api_MetamodelService_api","body":"API  The API defined by the service is: ","description":" The API defined by the service is: ","id":193219460},"193237835":{"title":"Core","url":"release-notes/release-notes.html#_core_8","body":"Core ","description":"","id":193237835},"193497711":{"title":"UI Hints","u
 rl":"guides/ugfun/ugfun.html#_ugfun_ui-hints","body":"UI Hints ","description":"","id":193497711},"194608562":{"title":"SPI","url":"guides/rgsvc/rgsvc.html#_spi_19","body":"SPI  It is also possible to define use some other underlying event bus implementation, by implementing the EventBusImplementation SPI:  As is probably obvious, the EventBusService just delegates down to these method calls when its own similarly named methods are called.  If you do provide your own implementation of this SPI, be aware that your subscribers will need to use whatever convention is required (eg different annotations) such that the events are correctly routed through to your subscribers.  If you have written your own implementation of the EventBusServiceImplementation SPI, then specify instead its fully-qualified class name: ","description":" It is also possible to define use some other underlying event bus implementation, by implementing the EventBusImplementation SPI: ","id":194608562},"195374240":{
 "title":"Update the LDAP committee (if a PMC member)","url":"guides/cgcom/cgcom.html#_update_the_ldap_committee_if_a_pmc_member","body":"Update the LDAP committee (if a PMC member)  (Assuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps:  The new committer does not officially become a member of the PMC until the ASF records have been updated. ","description":" (Assuming that the new committer is a PMC member), also add them as to the PMC committee. This takes two steps: ","id":195374240},"195848147":{"title":"ICLA, obtain new account","url":"guides/cgcom/cgcom.html#_icla_obtain_new_account","body":"ICLA, obtain new account  If required (that is, if the committer is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name.  More info can be found in the ASF new committers guide. ","description":" If required (that is, if the commit
 ter is not already a committer for a different ASF project), then ask them to complete an ICLA. As a result of this, they should also get an @apache.org user name. ","id":195848147},"196560907":{"title":"XJC profile","url":"guides/rgmvn/rgmvn.html#__rgmvn_xsd_xsd-submodule_xjc-profile","body":"XJC profile  The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t round-tripping: the original view model is only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context, eg in a Java subscriber on an event bus.  The xjc profile is defined as:  The referenced catalog.xml file instructs the xjc plugin how to resolve referenced schema locations. Only a reference for the Apache Isis common schema is likely to be needed: ","description":" The xjc profile reads the XSD generated by the xsd goal, and from it generates Java DTOs. Note that this isn’t round-tripping: the original view model is
  only for use within the Isis app, whereas the DTO generated from the XSDs is for use in a standalone context","id":196560907},"198329644":{"title":"Strings (Length)","url":"guides/ugfun/ugfun.html#__ugfun_programming-model_properties_datatypes_strings","body":"Strings (Length)  By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation.  For example:  This is a good example of a case where Apache Isis infers domain semantics from the JDO annotation. ","description":" By default JDO/DataNucleus will map string properties to a VARCHAR(255). To limit the length, use the @Column(length=…​) annotation. ","id":198329644},"198382465":{"title":"Actions","url":"pages/tg/tg.html#_actions","body":"Actions  Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entit
 ies, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered immediately; if a collection is returned then the Wicket viewer renders a table. Such collections are sometimes called \"standalone\" collections. ","description":" Most business functionality is implemented using actions basically a public method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered","id":198382465},"203208629":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_18","body":"New Feature ","description":"","id":203208629},"203740710":{"title":"RoutingService","url":"guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_RoutingService","body":"RoutingService  The RoutingService provides the ability to return (and therefore render) an alternative object from an action inv
 ocation.  There are two primary use cases:  Currently the routing service is used only by the Wicket viewer; it is ignored by the Restful Objects viewer. ","description":" The RoutingService provides the ability to return (and therefore render) an alternative object from an action invocation. ","id":203740710},"204452611":{"title":"Related services","url":"guides/rgsvc/rgsvc.html#_related_services_15","body":"Related services  The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","description":" The ConfigurationServiceMenu exposes the allConfigurationProperties action in the user interface. ","id":204452611},"207811701":{"title":"API","url":"guides/rgsvc/rgsvc.html#_api_2","body":"API  The API of TitleService is: ","description":" The API of TitleService is: ","id":207811701},"209853740":{"title":"To run","url":"guides/rgmvn/rgmvn.html#_to_run","body":"To run  The plugin is activated by default, so is run simply using:  This will run an
 y tests, and then also - because the plugin is activated by the isis-validate property and bound to the test phase, will run the plugin’s validate goal.  If for any reason you want to disable the validation, use: ","description":" The plugin is activated by default, so is run simply using: ","id":209853740},"213642269":{"title":"Moving on","url":"guides/ugfun/ugfun.html#__ugfun_getting-started_helloworld-archetype_moving-on","body":"Moving on  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 simpleapp archetype instead. Although a little more complex, it provides more structure and tests, all of which will help you as your application grows. ","description":" When you are ready to start working on your own app, we don’t recommend building on top of the helloworld app. ","id":213642269},"216231183":{"title":"Raising a pull request","url":"guides/dg/dg.html#_raising_a_pull_
 request","body":"Raising a pull request  If you have your own fork, you can now simply push the changes you’ve made locally to your fork:  This will create a corresponding branch in the remote github repo. If you use gitk --all, you’ll also see a remotes/origin/ISIS-123-blobs branch.  Then, use github to raise a pull request. Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail to the dev mailing list. You’ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn’t mandatory).  The process to raise the pull request, broadly speaking: ","description":" If you have your own fork, you can now simply push the changes you’ve made locally to your fork: ","id":216231183},"220685197":{"title":"AbstractSubscriber","url":"guides/rgcms/rgcms.html#_rgcms_classes_super_AbstractSubscriber","body":"AbstractSubscriber  This is a convenience superclass for creating subscriber domain services on the E
 ventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService.  It’s important that subscribers register before any domain services that might emit events on the EventBusService. For example, the (non-ASF) Incode Platform security module provides a domain service that automatically seeds certain domain entities; these will generate lifecycle events and so any subscribers must be registered before such seed services. The easiest way to do this is to use the @DomainServiceLayout#menuOrder() attribute.  As a convenience, the AbstractSubscriber specifies this attribute. ","description":" This is a convenience superclass for creating subscriber domain services on the EventBusService. It uses @PostConstruct and @PreDestroy callbacks to automatically register/unregister itself with the EventBusService. ","id":220685197},"221961571":{"title":"Release prepare \"dry run\"","url":"guides/cgcom/cgcom.html#__cgcom_cutting-
 a-release_releasing-core_release-prepare-dry-run","body":"Release prepare \"dry run\"  Most of the work is done using the mvn release:prepare goal. Since this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real.  Run the dry-run as follows:  You may be prompted for the gpg passphrase. ","description":" Most of the work is done using the mvn release:prepare goal. Since this makes a lot of changes, we run it first in \"dry run\" mode; only if that works do we run the goal for real. ","id":221961571},"224301547":{"title":"IsisWebAppBootstrapper","url":"guides/ugbtb/ugbtb.html#__code_isiswebappbootstrapper_code","body":"IsisWebAppBootstrapper  The IsisWebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use.  Its definition is:  Its context parameters are: ","description":" The IsisW
 ebAppBootstrapper servlet context listener bootstraps the shared (global) metadata for the Apache Isis framework. This listener is not required (indeed must not be configured) if the Wicket viewer is in use. ","id":224301547},"227377078":{"title":"Initialization","url":"guides/ugfun/ugfun.html#_ugfun_programming-model_domain-services_initialization","body":"Initialization  Services can optionally declare lifecycle callbacks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed).  An Apache Isis session is available when initialization occurs (so services can interact with the object store, for example).  The framework will call any public method annotated with @PostConstruct with either no arguments of an argument of type Map<String,String>. In the latter case, the framework passes in the configuration (isis.properties and any other component-specific configuration files).  Shutdown is similar; the framework will call any method annotated wi
 th @PreDestroy. ","description":" Services can optionally declare lifecycle callbacks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed). ","id":227377078},"228550183":{"title":"Policies","url":"guides/cgcom/cgcom.html#_cgcom_policies","body":"Policies ","description":"","id":228550183},"229025509":{"title":"Remove references to isis-viewer-wicket parent pom.","url":"migration-notes/migration-notes.html#_remove_references_to_code_isis_viewer_wicket_code_parent_pom","body":"Remove references to isis-viewer-wicket parent pom.  In earlier releases the Wicket viewer defined its own parent pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework.  Therefore, in the parent pom.xml of your own domain applications, remove: ","description":" In earlier releases the Wicket viewer defined its own parent 
 pom.xml for dependency management and its dependencies and to declare the various submodules that make up the viewer. This pom.xml has now been incorporated into the parent pom.xml for the Core framework. ","id":229025509},"230599582":{"title":"AuditingServiceInternal","url":"guides/rgfis/rgfis.html#_rgfis_persistence-layer_AuditingServiceInternal","body":"AuditingServiceInternal  The (internal) AuditingServiceInternal domain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured AuditingService to actually create audit entries of those changes. ","description":" The (internal) AuditingServiceInternal domain service acts as an internal facade to any configured AuditingService and AuditerService services. It is responsible for obtaining the details of all changes to domain objects within an interaction, and then
  to call the configured AuditingService to actually create audit entries of those changes. ","id":230599582},"232471644":{"title":"Registering Subscribers","url":"guides/rgsvc/rgsvc.html#_registering_subscribers","body":"Registering Subscribers  The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy lifecycle method (though as noted above, unregistering is actually a no-op).  For example:  This works for both singleton (application-scoped) and also @RequestScoped domain services. ","description":" The register() method should be called in the @PostConstruct lifecycle method. It is valid and probably the least confusing to readers to also \"unregister\" in the @PreDestroy lifecycle method (though as noted above, unregistering is actually a no-op). ","id":232471644},"238546442":{"title":"rebuildMetamodel()","url":"guides/rgcms/rgcms.html#__rgcms_classes_mixins_Obje
 ct_rebuildMetamodel","body":"rebuildMetamodel()  The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","description":" The Object_rebuildMetamodel mixin provides the ability to discard the current internal metamodel data (an instance of ObjectSpecification) for the domain class of the rendered object, and recreate from code and other sources (most notably, layout XML data). It has the following signature: ","id":238546442},"238979657":{"title":"New Feature","url":"release-notes/release-notes.html#_new_feature_22","body":"New Feature ","description":"","id":238979657},"240026998":{"title":"Improvement","url":"release-notes/release-notes.html#_improvement_14","body":"Improvement ","description":"","id":240026998},"242030985":{"title":"1.4.0","url":"re
 lease-notes/release-notes.html#_release-notes_1.4.0","body":"1.4.0 ","description":"","id":242030985},"243439147":{"title":"hidden()","url":"guides/rgant/rgant.html#_rgant-Property_hidden","body":"hidden()  Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections.  For example:  The acceptable values for the where parameter are:  For example, if a property is annotated with @Title, then normally this should be hidden from all tables. Annotating with @Property(where=Where.NOWHERE) overrides this. ","description":" Properties can be hidden at the domain-level, indicating that they are not visible to the end-user. This attribute can also be applied to actions and collections. ","id":243439147},"243876171":{"title":"Task","url":"release-notes/release-notes.html#_task_28","body":"Task ","description":"","id":243876171},"244520152":{"title":"SessionLoggingService","url":"guides/rgsvc/r
 gsvc.html#_rgsvc_presentation-layer-spi_SessionLoggingService","body":"SessionLoggingService  The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","description":" The SessionLoggingService defines an SPI to keep track of (typically: to log) the current sessions that are using the application. ","id":244520152},"246409050":{"title":"Using system properties","url":"guides/ugbtb/ugbtb.html#_using_system_properties","body":"Using system properties  The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides.  Thus, an alternative option for a Docker image is to bootstrap the servlet container (Tomcat, Jetty) with appropriate system properties set up. For example, with Tomcat this can be done by writing into the conf/catalina.properties file (see for example this stackoverflow post).  The Docker’s ENTRYPOINT therefore just needs to parse th
 e Docker container’s own command line arguments and use to create this file. ","description":" The servlet context initializer will search for any system properties called isis.xxx and if present will use them as overrides. ","id":246409050},"251015067":{"title":"myapp-dom Module","url":"migration-notes/migration-notes.html#__code_myapp_dom_code_module","body":"myapp-dom Module  In your myapp-dom module (containing definitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg:  Since there is no requirement to actually instantiate this class (it merely provides the location of the myapp.dom package), we give it a private constructor.  If you have any other modules where you have either domain services or entities, similarly create an empty \"module\" class. ","description":" In your myapp-dom module (containing definitions of your persistent entities and domain services), create an
  empty class to represent the module. This should be at the root package for the domain, eg: ","id":251015067},"255768608":{"title":"Multi-tenancy support","url":"pages/isis-in-pictures/isis-in-pictures.html#_multi_tenancy_support","body":"Multi-tenancy support  One significant feature of the (non-ASF) Incode Platform's security module is the ability to associate users and objects with a \"tenancy\". The todoapp uses this feature so that different users' list of todo items are kept separate from one another. A user with administrator is able to switch their own \"tenancy\" to the tenancy of some other user, in order to access the objects in that tenancy:  For more details, see the (non-ASF) Incode Platform's security module README. ","description":" One significant feature of the (non-ASF) Incode Platform's security module is the ability to associate users and objects with a \"tenancy\". The todoapp uses this feature so that different users' list of todo items are kept separate from
  one another. A user with administrator is able to switch","id":255768608},"257661017":{"title":"AppManifest (bootstrapping)","url":"guides/rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping","body":"AppManifest (bootstrapping)  This section describes how to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","description":" This section describes how to implement the AppManifest interface to bootstrap both an Apache Isis web application, and also its integration tests. ","id":257661017},"259202548":{"title":"Run-as","url":"guides/htg.html#_ugsec_hints-and-tips_run-as","body":"Run-as  This hint shows how to temporarily change the current user as reported by Shiro. This can be useful to support \"Run As\", for example.  The heavy lifting is done in ShiroService:  This could be exposed in the UI using a simple RunAsService, for example:  Credits: adapted from this gist. ","description":" This hint shows how to 
 temporarily change the current user as reported by Shiro. This can be useful to support \"Run As\", for example. ","id":259202548},"259358868":{"title":"Hints and Tips","url":"guides/ugodn/ugodn.html#_ugodn_hints-and-tips","body":"Hints and Tips ","description":"","id":259358868},"266250802":{"title":"Implementation","url":"guides/rgsvc/rgsvc.html#_implementation_2","body":"Implementation  There is no default implementation of this service.  The (non-ASF) Isis addons' kitchensink app provides an example implementation:  which is rendered as: ","description":" There is no default implementation of this service. ","id":266250802},"267695496":{"title":"Building Apache Isis","url":"guides/dg/dg.html#_dg_building-isis","body":"Building Apache Isis ","description":"","id":267695496},"273843820":{"title":"Simulated UI (WrapperFactory)","url":"guides/ugtst/ugtst.html#_simulated_ui_code_wrapperfactory_code","body":"Simulated UI (WrapperFactory)  When we talk about integration tests/specs her
 e, we mean tests that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface.  For most other frameworks that would require having to test the application in a very heavy weight/fragile fashion using a tool such as Selenium, driving a web browser to navigate . In this regard though, Apache Isis has a significant trick up its sleeve. Because Apache Isis implements the naked objects pattern, it means that the UI is generated automatically from declared domain-objects, -views and -services. This therefore allows for other implementations of the UI.  The WrapperFactory domain service allows a test to wrap domain objects and thus to interact with said objects \"as if\" through the UI:  If the test invokes an action that is disabled, then the wrapper will throw an appropriate exception. If the action is ok to invoke, it delegates through.  What this means is t
 hat an Isis application can be tested end-to-end without having to deploy it onto a webserver; the whole app can be tested while running in-memory. Although integration tests re (necessarily) slower than unit tests, they are not any harder to write (in fact, in some respects they are easier). ","description":" When we talk about integration tests/specs here, we mean tests that exercise the domain object logic, through to the actual database. But we also want the tests to exercise the app from the users’s perspective, which means including the user interface. ","id":273843820},"273985863":{"title":"addTo…​() (deprecated)","url":"guides/rgcms/rgcms.html#_rgcms_methods_prefixes_addTo","body":"addTo…​() (deprecated)  The addTo…​() supporting method is called whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed.  For example:  See also removeFrom…​()` ","description":" The addTo…​() supporting method is calle
 d whenever an object is added to a collection. Its purpose is to allow additional business logic to be performed. ","id":273985863},"278859977":{"title":"promptStyle()","url":"guides/rgant/rgant.html#_rgant-PropertyLayout_promptStyle","body":"promptStyle()  The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the property on the page).  If the attribute is not set, then the value of the configuration property isis.viewer.wicket.promptStyle is used. If this is itself not set, then an inline prompt is used.  For example:  Alternatively, the promptStyle() can be specified using file-based layouts. ","description":" The promptStyle() attribute is used to specify whether, when editing a domain object property, the new value for the property is prompted by way of a dialog box, or is prompted using an inline panel (replacing the proper
 ty on the page). ","id":278859977},"278890330":{"title":"Build a domain app","url":"pages/tg/tg.html#_build_a_domain_app","body":"Build a domain app  The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about:  Hopefully one of those ideas appeals or sparks an idea for something of your own. ","description":" The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about: ","id":278890330},"278999912":{"title":"Integration API","url":"guides/rgsvc/rgsvc.html#_rgsvc_integration-api","body":"Integration API ","description":"","id":278999912},"282766365":{"title":"Object CSS Styling","url":"guides/ugfun/ugfun.htm
 l#_object_css_styling","body":"Object CSS Styling  It is also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","description":" It is also possible for an object to return a CSS class. In conjunction with customized CSS this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour. ","id":282766365},"285898371":{"title":"ObjectUpdatedEvent","url":"guides/rgcms/rgcms.html#_rgcms_classes_lifecycleevent_ObjectUpdatedEvent","body":"ObjectUpdatedEvent  Subclass of AbstractLifecycleEvent, broadcast when an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user reque
 st.  ObjectUpdatedEvent.Default is the concrete implementation that is used. ","description":" Subclass of AbstractLifecycleEvent, broadcast when an object has just been updated in the database. This is done either explicitly when the current transaction is flushed using the DomainObjectContainer's #flush(…​) method, else is done implicitly when the transaction commits at the end of the user request. ","id":285898371},"286850218":{"title":"Dependent choices for action parameters","url":"guides/ugfun/ugfun.html#_dependent_choices_for_action_parameters","body":"Dependent choices for action parameters  For action it is also possible (in a limited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be derived from it.  A good example is a category/sub-category:  Note how the choices method for the 2nd parameter also accepts the first parameter. ","description":" For action it is also possible (in a l
 imited form) to define dependencies between parameters. Specifically, if one parameter is a drop-down choice, then other drop-down choices can be derived from it. ","id":286850218},"286919998":{"title":"Install Project Lombok","url":"guides/dg/dg.html#__dg_ide_eclipse_configure-lombok","body":"Install Project Lombok  The SimpleApp archetype uses Project Lombok annotations (@Getter and @Setter and so on) to reduce the boilerplate. For Eclipse IDE this requires an installation step:  Then restart Eclipse. ","description":" The SimpleApp archetype uses Project Lombok annotations (@Getter and @Setter and so on) to reduce the boilerplate. For Eclipse IDE this requires an installation step: ","id":286919998},"287120012":{"title":"Actions","url":"guides/ugfun/ugfun.html#_actions_2","body":"Actions  Of course, the precondition business rules described above are only one type of business rule.  More generally, business rules are implemented in the form of the implementation of actions. Rathe
 r than have the end-user have to edit individual properties of numerous objects, an action can encode these rules and allow only safe transformations of the application from one consistent state to the next. ","description":" Of course, the precondition business rules described above are only one type of business rule. ","id":287120012},"288377989":{"title":"Philosophy and Architecture","url":"guides/ugfun/ugfun.html#_ugfun_core-concepts_philosophy","body":"Philosophy and Architecture  This section describes some of the core ideas and architectural patterns upon which Apache Isis builds. ","description":" This section describes some of the core ideas and architectural patterns upon which Apache Isis builds. ","id":288377989},"288392697":{"title":"User Experience","url":"guides/ugvw/ugvw.html#_user_experience_3","body":"User Experience  The copy URL dialog is typically obtained by clicking on the icon.  Alternatively, alt+] will also open the dialog. It can be closed with either OK o
 r the Esc key. ","description":" The copy URL dialog is typically obtained by clicking on the icon. ","id":288392697},"291813215":{"title":"Raising events programmatically","url":"guides/rgant/rgant.html#_raising_events_programmatically","body":"Raising events programmatically  Normally events are only raised for interactions through the UI. However, events can be raised programmatically either by calling the EventBusService API directly, or by emulating the UI by wrapping the target object using th

<TRUNCATED>

[2/5] isis-site git commit: ISIS-1813: snapshot for 1.16.1-SNAPSHOT.

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/fcfba6ed/content/versions/SNAPSHOT/pages/tg/tg.html
----------------------------------------------------------------------
diff --git a/content/versions/SNAPSHOT/pages/tg/tg.html b/content/versions/SNAPSHOT/pages/tg/tg.html
index 4610f45..0c1ff0d 100644
--- a/content/versions/SNAPSHOT/pages/tg/tg.html
+++ b/content/versions/SNAPSHOT/pages/tg/tg.html
@@ -26,7 +26,7 @@
   <meta http-equiv="cache-control" content="no-cache"> 
   <meta http-equiv="pragma" content="no-cache"> 
   <meta http-equiv="expires" content="-1"> 
-  <title>Tutorials</title> 
+  <title>Tutorial</title> 
   <link rel="icon" type="image/png" href="../../images/isis-favicon.png"> 
   <!--
         Based on DataNucleus' template,
@@ -243,6 +243,7 @@ table.CodeRay td.code>pre{padding:0}
        </div> 
       </form> 
      </div> 
+     <p class="nav navbar-text navbar-right small">v1.16.1-SNAPSHOT</p> 
     </div> 
    </div> 
   </nav> 
@@ -257,7 +258,7 @@ table.CodeRay td.code>pre{padding:0}
       </div> 
      </div> 
      <div class="page-title"> 
-      <h1>Tutorials</h1> 
+      <h1>Tutorial</h1> 
      </div> 
      <div id="doc-content">
       <div class="btn-group" style="float: right; font-size: small; padding: 6px;  ">
@@ -270,1773 +271,988 @@ table.CodeRay td.code>pre{padding:0}
         <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/pages/tg/tg.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
        </ul>
       </div> 
+      <div id="preamble"> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>This is a half-day tutorial on developing domain-driven apps using Apache Isis.</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>Actually, you could probably spend a full day working through this tutorial if you wanted to, so pick and choose the bits that look interesting. The tutorial was originally written by Dan Haywood, for a conference workshop.</p> 
+        </div> 
+       </div> 
+      </div> 
       <div class="sect1"> 
-       <h2 id="__tg">1. Tutorials</h2> 
+       <h2 id="_prerequisites">1. Prerequisites</h2> 
        <div class="sectionbody"> 
         <div class="paragraph"> 
-         <p>This page contains a couple of tutorials for you to follow.</p> 
+         <p>You’ll need:</p> 
         </div> 
         <div class="ulist"> 
          <ul> 
-          <li> <p>the <a href="#_tg_tutorials_pet-clinic">"petclinic"</a> tutorial takes you step-by-step through building a simple application of just three classes. There are example solutions in the github repo in case you get lost.</p> </li> 
-          <li> <p>an <a href="#_tg_tutorials_pet-clinic-extended">extended version</a> of the "petclinic" tutorial, (with the text hosted on github repo).</p> </li> 
-          <li> <p>the <a href="#_tg_tutorials_stop-scaffolding-start-coding">"stop scaffolding, start coding"</a> tutorial is taken from a conference workshop. It has less hand-holding, but lists out the steps for you to follow. It’s a good cookbook to follow when you’re readng to take things further.</p> </li> 
+          <li> <p>Java 7 JDK</p> </li> 
+          <li> <p><a href="http://maven.apache.org/">Maven</a> 3.2.x</p> </li> 
+          <li> <p>an IDE, such as <a href="http://www.eclipse.org/">Eclipse</a> or <a href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>.</p> </li> 
          </ul> 
         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_run_the_archetype">2. Run the archetype</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Run the simpleapp archetype to build an empty Isis application. With the *nix bash shell, use:</p> 
+        </div> 
+        <div class="listingblock"> 
+         <div class="content"> 
+          <pre class="CodeRay highlight"><code data-lang="bash">mvn archetype:generate  \
+    -D archetypeGroupId=org.apache.isis.archetype \
+    -D archetypeArtifactId=simpleapp-archetype \
+    -D archetypeVersion=1.16.0 \
+    -D groupId=com.mycompany \
+    -D artifactId=myapp \
+    -D version=1.0-SNAPSHOT \
+    -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
+    -B</code></pre> 
+         </div> 
+        </div> 
         <div class="paragraph"> 
-         <p>Have fun!</p> 
+         <p>Adjust as necessary if using Windows <code>cmd.exe</code> or Powershell.</p> 
         </div> 
        </div> 
       </div> 
       <div class="sect1"> 
-       <h2 id="_tg_pet-clinic">2. Pet Clinic</h2>
-       <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
-        <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
-        <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
-        <ul class="dropdown-menu">
-         <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
-         <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
-         <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
-         <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
-        </ul>
-       </div> 
+       <h2 id="_build_and_run">3. Build and run</h2> 
        <div class="sectionbody"> 
         <div class="paragraph"> 
-         <p>This is a step-by-step tutorial to build up a simple "petclinic" application, starting from the <a href="../../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>. It was originally written by Jeroen van der Wal.</p> 
+         <p>Start off by building the app from the command line:</p> 
+        </div> 
+        <div class="listingblock"> 
+         <div class="content"> 
+          <pre class="CodeRay highlight"><code data-lang="bash">cd myapp
+mvn clean install -D mavenmixin-jettyconsole</code></pre> 
+         </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>Once that’s built then run using:</p> 
+        </div> 
+        <div class="listingblock"> 
+         <div class="content"> 
+          <pre class="CodeRay highlight"><code data-lang="bash">mvn -pl webapp antrun:run -D mavenmixin-jettyconsole</code></pre> 
+         </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>A splash screen should appear offering to start up the app. Go ahead and start; the web browser should be opened at <a href="http://localhost:8080">http://localhost:8080</a></p> 
         </div> 
         <div class="paragraph"> 
-         <p>It consists of just three domain classes (<a href="http://yuml.me/edit/3db2078c">http://yuml.me/3db2078c</a>):</p> 
+         <p>Alternatively, you can run using the mvn-jetty-plugin:</p> 
         </div> 
-        <div class="imageblock"> 
+        <div class="listingblock"> 
          <div class="content"> 
-          <a class="image" href="images/tutorials/pet-clinic/domain-model.png"><img src="images/tutorials/pet-clinic/domain-model.png" alt="domain model"></a> 
+          <pre class="CodeRay highlight"><code data-lang="bash">mvn -pl webapp jetty:run</code></pre> 
          </div> 
         </div> 
         <div class="paragraph"> 
-         <p>This supports the following use cases:</p> 
+         <p>This will accomplish the same thing, though the webapp is mounted at a slightly different URL</p> 
+        </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_using_the_app">4. Using the app</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Navigate to the Wicket UI (eg <a href="http://localhost:8080/wicket">http://localhost:8080/wicket</a>), and login (sven/pass).</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>Once at the home page:</p> 
         </div> 
         <div class="ulist"> 
          <ul> 
-          <li> <p>register a <code>Pet</code></p> </li> 
-          <li> <p>register an <code>Owner</code></p> </li> 
-          <li> <p>maintain a <code>Pet</code>'s details</p> </li> 
-          <li> <p>check in a <code>Pet</code> to visit the clinic</p> </li> 
-          <li> <p>enter a <code>Diagnosis</code></p> </li> 
-          <li> <p>check out a <code>Pet</code> after visiting the clinic</p> </li> 
+          <li> <p>install fixtures</p> </li> 
+          <li> <p>list all objects</p> </li> 
+          <li> <p>create a new object</p> </li> 
+          <li> <p>list all objects</p> </li> 
          </ul> 
         </div> 
         <div class="paragraph"> 
-         <p>Either follow along or check out the tags from the corresponding <a href="https://github.com/danhaywood/isis-app-petclinic">github repo</a>.</p> 
+         <p>Go back to the splash screen, and quit the app. Note that the database runs in-memory (using HSQLDB) so any data created will be lost between runs.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_prerequisites">2.1. Prerequisites</h3> 
-         <div class="paragraph"> 
-          <p>You’ll need:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p>Java 7 JDK</p> </li> 
-           <li> <p><a href="http://maven.apache.org/">Maven</a> 3.2.x</p> </li> 
-           <li> <p>an IDE, such as <a href="http://www.eclipse.org/">Eclipse</a> or <a href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>.</p> </li> 
-          </ul> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_dev_environment">5. Dev environment</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Set up <a href="../../guides/dg/dg.html#_dg_ide">an IDE</a> and import the project to be able to run and debug the app.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_run_the_archetype">2.2. Run the archetype</h3> 
-         <div class="paragraph"> 
-          <p>Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a "git checkout" note:</p> 
-         </div> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/249abe476797438d83faa12ff88365da2c362451</code></pre> 
-               </div> 
-              </div> 
-              <div class="paragraph"> 
-               <p>Do note that the tutorial was originally developed against Apache Isis 1.8.0-SNAPSHOT; replace "1.8.0-SNAPSHOT" for the any version from 1.8.0 up to 1.13.1. (The structure of Apache Isis archetype changed in 1.13.2).</p> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Run the simpleapp archetype to build an empty Isis application. With the *nix bash shell, use:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mvn archetype:generate  \
-    -D archetypeGroupId=org.apache.isis.archetype \
-    -D archetypeArtifactId=simpleapp-archetype \
-    -D archetypeVersion=1.13.1 \
-    -D groupId=com.mycompany \
-    -D artifactId=petclinic \
-    -D version=1.0-SNAPSHOT \
-    -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
-    -B</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Adjust as necessary if using Windows <code>cmd.exe</code> or Powershell.</p> 
-         </div> 
-         <div class="admonitionblock note"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
-             <td class="content"> 
-              <div class="paragraph"> 
-               <p>You can use 1.13.2 (or later) version of the archetype if you wish, however be aware that the structure of the solution repo (mentioned above) will be different from the structure for applications generated using 1.13.2 onwards.</p> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>This will generate the app in a <code>petclinic</code> directory. Move the contents back:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mv petclinic/* .
-rmdir petclinic</code></pre> 
-          </div> 
-         </div> 
+        <div class="paragraph"> 
+         <p>Then set up a launch configuration and check that you can:</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_build_and_run">2.3. Build and run</h3> 
-         <div class="paragraph"> 
-          <p>Start off by building the app from the command line:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mvn clean install</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>You can run using the mvn-jetty-plugin:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mvn -pl webapp jetty:run</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>You can then browser to <a href="http://localhost:8080">http://localhost:8080</a></p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>If using 1.13.2 or later, then you can also use the <a href="https://github.com/danhaywood/java-mavenmixin-jettyconsole/blob/master/README.adoc">jetty-console</a> plugin:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mvn clean install -Dmavenmixin-jettyconsole
-mvn -pl webapp antrun:run -Dmavenmixin-jettyconsole</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>This packages the app as a standalone JAR, and then runs using the AntRun plugin.</p> 
-         </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>Run the app from within the IDE</p> </li> 
+          <li> <p>Run the app in debug mode</p> </li> 
+          <li> <p>Run with different deploymentTypes; note whether prototype actions (those annotated <a href="../../guides/rgant/rgant.html#_rgant-Action_restrictTo"><code>@Action(restrictTo=PROTOTYPING</code></a>) are available or not:</p> </li> 
+          <li> <p><code>--type SERVER_PROTOTYPE</code></p> </li> 
+          <li> <p><code>--type SERVER</code></p> </li> 
+         </ul> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_using_the_app">2.4. Using the app</h3> 
-         <div class="paragraph"> 
-          <p>Navigate to the Wicket UI (eg <a href="http://localhost:8080/wicket">http://localhost:8080/wicket</a>), and login (sven/pass).</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/010-01-login-page.png"><img src="images/tutorials/pet-clinic/010-01-login-page.png" alt="010 01 login page" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>The home page should be shown:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/010-02-home-page.png"><img src="images/tutorials/pet-clinic/010-02-home-page.png" alt="010 02 home page" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Install the fixtures (example test data) using the <code>Prototyping</code> menu:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/010-03-prototyping-menu.png"><img src="images/tutorials/pet-clinic/010-03-prototyping-menu.png" alt="010 03 prototyping menu" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>List all objects using the <code>Simple Objects</code> menu:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/010-04-simpleobjects.png"><img src="images/tutorials/pet-clinic/010-04-simpleobjects.png" alt="010 04 simpleobjects" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>To return the objects created:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/010-05-simpleobject-list.png"><img src="images/tutorials/pet-clinic/010-05-simpleobject-list.png" alt="010 05 simpleobject list" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Experiment some more, to:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p>create a new object</p> </li> 
-           <li> <p>list all objects</p> </li> 
-          </ul> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Go back to the splash screen, and quit the app. Note that the database runs in-memory (using HSQLDB) so any data created will be lost between runs.</p> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_explore_codebase">6. Explore codebase</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Apache Isis applications are organized into several Maven modules. Within your IDE navigate to the various classes and correlate back to the generated UI.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_dev_environment">2.5. Dev environment</h3> 
-         <div class="paragraph"> 
-          <p>Set up <a href="../../guides/dg/dg.html#_dg_ide">an IDE</a> and import the project to be able to run and debug the app.</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Then set up a launch configuration so that you can run the app from within the IDE. To save having to run the fixtures every time, specify the following system properties:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">-Disis.persistor.datanucleus.install-fixtures=true -Disis.fixtures=fixture.simple.scenario.SimpleObjectsFixture</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>For example, here’s what a launch configuration in IntelliJ idea looks like:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/020-01-idea-configuration.png"><img src="images/tutorials/pet-clinic/020-01-idea-configuration.png" alt="020 01 idea configuration" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>where the "before launch" maven goal (to run the DataNucleus enhancer) is defined as:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/020-02-idea-configuration.png"><img src="images/tutorials/pet-clinic/020-02-idea-configuration.png" alt="020 02 idea configuration" width="400px"></a> 
-          </div> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_testing">7. Testing</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Testing is of course massively important, and Apache Isis makes both unit testing and (end-to-end) integration testing easy. Building the app from the Maven command line ("mvn clean install") will run all tests, but you should also run the tests from within the IDE.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_explore_codebase">2.6. Explore codebase</h3> 
-         <div class="paragraph"> 
-          <p>Apache Isis applications are organized into several Maven modules. Within your IDE navigate to the various classes and correlate back to the generated UI:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p><code>petclinic</code> : parent module</p> </li> 
-           <li> <p><code>petclinic-dom</code>: domain objects module</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p>entity: <code>dom.simple.SimpleObject</code></p> </li> 
-              <li> <p>repository: <code>dom.simple.SimpleObjects</code></p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p><code>petclinic-fixture</code>: fixtures module</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p>fixture script:`fixture.simple.SimpleObjectsFixture`</p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p><code>petclinic-integtests</code>: integration tests module</p> </li> 
-           <li> <p><code>petclinic-webapp</code>: webapp module</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p>(builds the WAR file)</p> </li> 
-             </ul> 
-            </div> </li> 
-          </ul> 
-         </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p><code>myapp-dom</code> unit tests</p> </li> 
+          <li> <p>run</p> </li> 
+          <li> <p>inspect, eg</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p><code>SimpleObjectTest</code></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p><code>myapp-integtests</code> integration tests</p> </li> 
+          <li> <p>run</p> </li> 
+          <li> <p>inspect, eg:</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p><code>integration.tests.smoke.SimpleObjectsTest</code></p> </li> 
+             <li> <p><code>integration.specs.simple.SimpleObjectSpec_listAllAndCreate.feature</code></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>generated report, eg</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p><code>myapp/integtests/target/cucumber-html-report/index.html</code></p> </li> 
+             <li> <p>change test in IDE, re-run (in Maven)</p> </li> 
+            </ul> 
+           </div> </li> 
+         </ul> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_testing">2.7. Testing</h3> 
-         <div class="paragraph"> 
-          <p>Testing is of course massively important, and Apache Isis makes both unit testing and (end-to-end) integration testing easy. Building the app from the Maven command line ("mvn clean install") will run all tests, but you should also run the tests from within the IDE.</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p><code>myapp-dom</code> unit tests</p> </li> 
-           <li> <p>run</p> </li> 
-           <li> <p>inspect, eg</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>SimpleObjectTest</code></p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p><code>myapp-integtests</code> integration tests</p> </li> 
-           <li> <p>run</p> </li> 
-           <li> <p>inspect, eg:</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>integration.tests.smoke.SimpleObjectsTest</code></p> </li> 
-              <li> <p><code>integration.specs.simple.SimpleObjectSpec_listAllAndCreate.feature</code></p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p>generated report, eg</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>myapp/integtests/target/cucumber-html-report/index.html</code></p> 
-               <div class="ulist"> 
-                <ul> 
-                 <li> <p>change test in IDE, re-run (in Maven)</p> </li> 
-                </ul> 
-               </div> </li> 
-             </ul> 
-            </div> </li> 
-          </ul> 
-         </div> 
-         <div class="paragraph"> 
-          <p>If you have issues with the integration tests, make sure that the domain classes have been enhanced by the DataNucleus enhancer. (The exact mechanics depends on the IDE being used).</p> 
-         </div> 
+        <div class="paragraph"> 
+         <p>If you have issues with the integration tests, make sure that the domain classes have been enhanced by the DataNucleus enhancer. (The exact mechanics depends on the IDE being used).</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_update_pom_files">2.8. Update POM files</h3> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/68904752bc2de9ebb3c853b79236df2b3ad2c944</code></pre> 
-               </div> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>The POM files generated by the simpleapp archetype describe the app as "SimpleApp". Update them to say "PetClinic" instead.</p> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_prototyping">8. Prototyping</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Although testing is important, in this tutorial we want to concentrate on how to write features and to iterate quickly. So for now, exclude the <code>integtests</code> module. Later on in the tutorial we’ll add the tests back in so you can learn how to write automated tests for the features of your app.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_delete_the_bdd_specs">2.9. Delete the BDD specs</h3> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/9046226249429b269325dfa2baccf03635841c20</code></pre> 
-               </div> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>During this tutorial we’re going to keep the integration tests in-sync with the code, but we’re going to stop short of writing BDD/Cucumber specs.</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Therefore delete the BDD feature spec and glue in the <code>integtest</code> module:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p><code>integration/specs/*</code></p> </li> 
-           <li> <p><code>integration/glue/*</code></p> </li> 
-          </ul> 
-         </div> 
+        <div class="paragraph"> 
+         <p>In the parent <code>pom.xml</code>:</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_rename_artifacts">2.10. Rename artifacts</h3> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/bee3629c0b64058f939b6dd20f226be31810fc66</code></pre> 
-               </div> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
+        <div class="listingblock"> 
+         <div class="content"> 
+          <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;modules&gt;</span>
+    <span class="tag">&lt;module&gt;</span>dom<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>fixture<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>integtests<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>webapp<span class="tag">&lt;/module&gt;</span>
+<span class="tag">&lt;/modules&gt;</span></code></pre> 
          </div> 
-         <div class="paragraph"> 
-          <p>Time to start refactoring the app. The heart of the PetClinic app is the <code>Pet</code> concept, so go through the code and refactor. While we’re at it, refactor the app itself from "SimpleApp" to "PetClinicApp".</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>See the git commit for more detail, but in outline, the renames required are:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p>in the <code>dom</code> module’s production code</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>SimpleObject</code> -&gt; <code>Pet</code> (entity)</p> </li> 
-              <li> <p><code>SimpleObjects</code> -&gt; <code>Pets</code> (repository domain service)</p> </li> 
-              <li> <p><code>SimpleObject.layout.json</code> -&gt; <code>Pet.layout.json</code> (layout hints for the <code>Pet</code> entity)</p> </li> 
-              <li> <p>delete the <code>SimpleObject.png</code>, and add a new <code>Pet.png</code> (icon shown against all <code>Pet</code> instances).</p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p>in the <code>dom</code> module’s unit test code</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>SimpleObjectTest</code> -&gt; <code>PetTest</code> (unit tests for <code>Pet</code> entity)</p> </li> 
-              <li> <p><code>SimpleObjectsTest</code> -&gt; <code>PetsTest</code> (unit tests for <code>Pets</code> domain service)</p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p>in the <code>fixture</code> module:</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>SimpleObjectsFixturesService</code> -&gt; <code>PetClinicAppFixturesService</code> (rendered as the prototyping menu in the UI)</p> </li> 
-              <li> <p><code>SimpleObjectsTearDownService</code> -&gt; <code>PetClinicAppTearDownService</code> (tear down all objects between integration tests)</p> </li> 
-              <li> <p><code>SimpleObjectAbstract</code> -&gt; <code>PetAbstract</code> (abstract class for setting up a single pet object</p> 
-               <div class="ulist"> 
-                <ul> 
-                 <li> <p>and corresponding subclasses to set up sample data (eg <code>PetForFido</code>)</p> </li> 
-                </ul> 
-               </div> </li> 
-              <li> <p><code>SimpleObjectsFixture</code> -&gt; <code>PetsFixture</code> (tear downs system and then sets up all pets)</p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p>in the <code>integtest</code> module:</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>SimpleAppSystemInitializer</code> -&gt; <code>PetClinicAppSystemInitializer</code> (bootstraps integration tests with domain service/repositories)</p> </li> 
-              <li> <p><code>SimpleAppIntegTest</code> -&gt; <code>PetClinicAppIntegTest</code> (base class for integration tests)</p> </li> 
-              <li> <p><code>SimpleObjectTest</code> -&gt; <code>PetTest</code> (integration test for <code>Pet</code> entity)</p> </li> 
-              <li> <p><code>SimpleObjectsTest</code> -&gt; <code>PetsTest</code> (integration test for <code>Pets</code> domain service)</p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p>in the <code>webapp</code> module:</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>SimpleApplication</code> -&gt; <code>PetClinicApplication</code></p> </li> 
-              <li> <p>update <code>isis.properties</code></p> </li> 
-              <li> <p>update <code>web.xml</code></p> </li> 
-             </ul> 
-            </div> </li> 
-          </ul> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Note that <code>Pet</code> has both both Isis and JDO annotations:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@javax</span>.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE) <i class="conum" data-value="1"></i><b>(1)</b>
-<span class="annotation">@javax</span>.jdo.annotations.DatastoreIdentity(                                      <i class="conum" data-value="2"></i><b>(2)</b>
-        strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY,
-         column=<span class="string"><span class="delimiter">"</span><span class="content">id</span><span class="delimiter">"</span></span>)
-<span class="annotation">@javax</span>.jdo.annotations.Version(                                                <i class="conum" data-value="3"></i><b>(3)</b>
-        strategy=VersionStrategy.VERSION_NUMBER,
-        column=<span class="string"><span class="delimiter">"</span><span class="content">version</span><span class="delimiter">"</span></span>)
-<span class="annotation">@javax</span>.jdo.annotations.Unique(name=<span class="string"><span class="delimiter">"</span><span class="content">Pet_name_UNQ</span><span class="delimiter">"</span></span>, members = {<span class="string"><span class="delimiter">"</span><span class="content">name</span><span class="delimiter">"</span></span>})         <i class="conum" data-value="4"></i><b>(4)</b>
-<span class="annotation">@ObjectType</span>(<span class="string"><span class="delimiter">"</span><span class="content">PET</span><span class="delimiter">"</span></span>)                                                             <i class="conum" data-value="5"></i><b>(5)</b>
-<span class="annotation">@Bookmarkable</span>                                                                  <i class="conum" data-value="6"></i><b>(6)</b>
-<span class="directive">public</span> <span class="type">class</span> <span class="class">Pet</span> <span class="directive">implements</span> <span class="predefined-type">Comparable</span>&lt;Pet&gt; {
-    ...
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>where:</p> 
-         </div> 
-         <div class="colist arabic"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td><i class="conum" data-value="1"></i><b>1</b></td> 
-             <td><code>@PersistenceCapable</code> and</td> 
-            </tr> 
-            <tr> 
-             <td><i class="conum" data-value="2"></i><b>2</b></td> 
-             <td><code>@DatastoreIdentity</code> specify a surrogate <code>Id</code> column to be used as the primary key</td> 
-            </tr> 
-            <tr> 
-             <td><i class="conum" data-value="3"></i><b>3</b></td> 
-             <td><code>@Version</code> provides support for optimistic locking</td> 
-            </tr> 
-            <tr> 
-             <td><i class="conum" data-value="4"></i><b>4</b></td> 
-             <td><code>@Unique</code> enforces a uniqueness constraint so that no two `Pet`s can have the same name (unrealistic, but can refactor later)</td> 
-            </tr> 
-            <tr> 
-             <td><i class="conum" data-value="5"></i><b>5</b></td> 
-             <td><code>@ObjectType</code> is used by Apache Isis for its own internal "OID" identifier; this also appears in the URL in Apache Isis' Wicket viewer and REST API</td> 
-            </tr> 
-            <tr> 
-             <td><i class="conum" data-value="6"></i><b>6</b></td> 
-             <td><code>@Bookmarkable</code> indicates that the object can be automatically bookmarked in Apache Isis' Wicket viewer</td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="admonitionblock note"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> 
-             <td class="content"> 
-              <div class="paragraph"> 
-               <p>The <code>@ObjectType</code> and <code>@Bookmarkable</code> annotations have since been deprecated, replaced with <code>@DomainObject(objectType=…​)</code> and <code>@DomainObjectLayout(bookmarking=…​)</code></p> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>The <code>Pets</code> domain service also has Isis annotations:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span>(repositoryFor = Pet.class)
-<span class="annotation">@DomainServiceLayout</span>(menuOrder = <span class="string"><span class="delimiter">"</span><span class="content">10</span><span class="delimiter">"</span></span>)
-<span class="directive">public</span> <span class="type">class</span> <span class="class">Pets</span> {
-    ...
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>where:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p><code>DomainService</code> indicates that the service should be instantiated automatically (as a singleton)</p> </li> 
-           <li> <p><code>DomainServiceLayout</code> provides UI hints, in this case the positioning of the menu for the actions provided by the service</p> </li> 
-          </ul> 
-         </div> 
-         <div class="paragraph"> 
-          <p>To run the application will require an update to the IDE configuration, for the changed name of the fixture class:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/030-01-idea-configuration-updated.png"><img src="images/tutorials/pet-clinic/030-01-idea-configuration-updated.png" alt="030 01 idea configuration updated" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Running the app should now show `Pet`s:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/030-02-updated-app.png"><img src="images/tutorials/pet-clinic/030-02-updated-app.png" alt="030 02 updated app" width="600px"></a> 
-          </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>change to:</p> 
+        </div> 
+        <div class="listingblock"> 
+         <div class="content"> 
+          <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;modules&gt;</span>
+    <span class="tag">&lt;module&gt;</span>dom<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>fixture<span class="tag">&lt;/module&gt;</span>
+    <span class="comment">&lt;!-- &lt;module&gt;integtests&lt;/module&gt; --&gt;</span>
+    <span class="tag">&lt;module&gt;</span>webapp<span class="tag">&lt;/module&gt;</span>
+<span class="tag">&lt;/modules&gt;</span></code></pre> 
          </div> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_update_package_names">2.11. Update package names</h3> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/55ec36e520191f5fc8fe7f5b89956814eaf13317</code></pre> 
-               </div> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>The classes created by the simpleapp archetype are by default in the <code>simple</code> package. Move these classes to <code>pets</code> package instead. Also adjust package names where they appear as strings:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p>in <code>PetClinicAppFixturesService</code>, change the package name from "fixture.simple" to "fixture.pets".</p> </li> 
-           <li> <p>in <code>PetClinicAppSystemInitializer</code>, change the package name "dom.simple" to "dom.pets", and similarly "fixture.simple" to "fixture.pets"</p> </li> 
-           <li> <p>in <code>WEB-INF/isis.properties</code>, similarly change the package name "dom.simple" to "dom.pets", and similarly "fixture.simple" to "fixture.pets"</p> </li> 
-          </ul> 
-         </div> 
-         <div class="paragraph"> 
-          <p>To run the application will require a further update to the IDE configuration, for the changed package of the fixture class:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/040-01-idea-configuration-updated.png"><img src="images/tutorials/pet-clinic/040-01-idea-configuration-updated.png" alt="040 01 idea configuration updated" width="600px"></a> 
-          </div> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_build_a_domain_app">9. Build a domain app</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>The remainder of the tutorial provides guidance on building a domain application. We don’t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you’re stuck for ideas, then how about:</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_add_code_petspecies_code_enum">2.12. Add <code>PetSpecies</code> enum</h3> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/55c9cd28ff960220719b3dc7cb8abadace8d0829</code></pre> 
-               </div> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Each <code>Pet</code> is of a particular species. Model these as an enum called <code>PetSpecies</code>:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">enum</span> PetSpecies {
-    Cat,
-    Dog,
-    Budgie,
-    Hamster,
-    Tortoise
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Introduce a new property on <code>Pet</code> of this type:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Pet</span> {
-    ...
-    private PetSpecies species;
-    <span class="annotation">@javax</span>.jdo.annotations.Column(allowsNull = <span class="string"><span class="delimiter">"</span><span class="content">false</span><span class="delimiter">"</span></span>)
-    <span class="directive">public</span> PetSpecies getSpecies() { <span class="keyword">return</span> species; }
-    <span class="directive">public</span> <span class="type">void</span> setSpecies(<span class="directive">final</span> PetSpecies species) { <span class="local-variable">this</span>.species = species; }
-    ...
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Update fixtures, unit tests and integration tests.</p> 
-         </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>a todo app (<code>ToDoItem</code>s)</p> </li> 
+          <li> <p>a pet clinic (<code>Pet</code>, <code>Owner</code>, <code>PetSpecies</code>, <code>Visit</code>)</p> </li> 
+          <li> <p>a library (<code>Book</code>, <code>Title</code>, <code>LibraryMember</code>, <code>Loan</code>, <code>Reservation</code>)</p> </li> 
+          <li> <p>a holiday cottage rental system</p> </li> 
+          <li> <p>a scrum/kanban system (inspired by Trello)</p> </li> 
+          <li> <p>a meeting planner (inspired by Doodle)</p> </li> 
+          <li> <p>(the domain model for) a CI server (inspired by Travis/Jenkins)</p> </li> 
+          <li> <p>a shipping system (inspired by the example in the DDD "blue" book)</p> </li> 
+          <li> <p>a system for ordering coffee (inspired by Restbucks, the example in "Rest in Practice" book)</p> </li> 
+         </ul> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_icon_to_reflect_pet_species">2.13. Icon to reflect pet species</h3> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/2212765694693eb463f8fa88bab1bad154add0cb</code></pre> 
-               </div> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Rather than using a single icon for a domain class, instead a different icon can be supplied for each instance. We can therefore have different icon files for each pet, reflecting that pet’s species.</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Pet</span> {
-    ...
-    public <span class="predefined-type">String</span> iconName() {
-        <span class="keyword">return</span> getSpecies().name();
-    }
-    ...
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Download corresponding icon files (<code>Dog.png</code>, <code>Cat.png</code> etc)</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Running the app shows the <code>Pet</code> and its associated icon:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/050-01-list-all.png"><img src="images/tutorials/pet-clinic/050-01-list-all.png" alt="050 01 list all" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>with the corresponding view of the <code>Pet</code>:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/050-02-view-pet.png"><img src="images/tutorials/pet-clinic/050-02-view-pet.png" alt="050 02 view pet" width="600px"></a> 
-          </div> 
-         </div> 
+        <div class="paragraph"> 
+         <p>Hopefully one of those ideas appeals or sparks an idea for something of your own.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_add_pet_s_code_owner_code">2.14. Add pet’s <code>Owner</code></h3> 
-         <div class="admonitionblock tip"> 
-          <table> 
-           <tbody>
-            <tr> 
-             <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> 
-             <td class="content"> 
-              <div class="listingblock"> 
-               <div class="content"> 
-                <pre class="CodeRay highlight"><code data-lang="bash">git checkout https://github.com/danhaywood/isis-app-petclinic/commit/6f92a8ee8e76696d005da2a8b7a746444d017546</code></pre> 
-               </div> 
-              </div> </td> 
-            </tr> 
-           </tbody>
-          </table> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Add the <code>Owner</code> entity and corresponding <code>Owners</code> domain service (repository). Add a query to find `Order`s by name:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java">...
-<span class="annotation">@javax</span>.jdo.annotations.Queries( {
-        <span class="annotation">@javax</span>.jdo.annotations.Query(
-                name = <span class="string"><span class="delimiter">"</span><span class="content">findByName</span><span class="delimiter">"</span></span>, language = <span class="string"><span class="delimiter">"</span><span class="content">JDOQL</span><span class="delimiter">"</span></span>,
-                value = <span class="string"><span class="delimiter">"</span><span class="content">SELECT </span><span class="delimiter">"</span></span>
-                        + <span class="string"><span class="delimiter">"</span><span class="content">FROM dom.owners.Owner </span><span class="delimiter">"</span></span>
-                        + <span class="string"><span class="delimiter">"</span><span class="content">WHERE name.matches(:name)</span><span class="delimiter">"</span></span>)
-})
-<span class="directive">public</span> <span class="type">class</span> <span class="class">Owner</span> ... {
-    ...
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>and <code>findByName(…​)</code> in <code>Owners</code>:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Owners</span> {
-    ...
-    public <span class="predefined-type">List</span>&lt;<span class="predefined-type">Owner</span>&gt; findByName(
-            <span class="annotation">@ParameterLayout</span>(named = <span class="string"><span class="delimiter">"</span><span class="content">Name</span><span class="delimiter">"</span></span>)
-            <span class="directive">final</span> <span class="predefined-type">String</span> name) {
-        <span class="directive">final</span> <span class="predefined-type">String</span> nameArg = <span class="predefined-type">String</span>.format(<span class="string"><span class="delimiter">"</span><span class="content">.*%s.*</span><span class="delimiter">"</span></span>, name);
-        <span class="directive">final</span> <span class="predefined-type">List</span>&lt;<span class="predefined-type">Owner</span>&gt; owners = container.allMatches(
-                <span class="keyword">new</span> QueryDefault&lt;&gt;(
-                        <span class="predefined-type">Owner</span>.class,
-                        <span class="string"><span class="delimiter">"</span><span class="content">findByName</span><span class="delimiter">"</span></span>,
-                        <span class="string"><span class="delimiter">"</span><span class="content">name</span><span class="delimiter">"</span></span>, nameArg));
-        <span class="keyword">return</span> owners;
-    }
-    ...
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Add an <code>owner</code> property to <code>Pet</code>, with supporting <code>autoCompleteXxx()</code> method (so that available owners are shown in a drop-down list box):</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Pet</span> ... {
-    ...
-    private <span class="predefined-type">Owner</span> owner;
-    <span class="annotation">@javax</span>.jdo.annotations.Column(allowsNull = <span class="string"><span class="delimiter">"</span><span class="content">false</span><span class="delimiter">"</span></span>)
-    <span class="directive">public</span> <span class="predefined-type">Owner</span> getOwner() { <span class="keyword">return</span> owner; }
-    <span class="directive">public</span> <span class="type">void</span> setOwner(<span class="directive">final</span> <span class="predefined-type">Owner</span> owner) { <span class="local-variable">this</span>.owner = owner; }
-    <span class="directive">public</span> <span class="predefined-type">Collection</span>&lt;<span class="predefined-type">Owner</span>&gt; autoCompleteOwner(<span class="directive">final</span> <span class="annotation">@MinLength</span>(<span class="integer">1</span>) <span class="predefined-type">String</span> name) {
-        <span class="keyword">return</span> owners.findByName(name);
-    }
-    ...
-}</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Also updated fixture data to set up a number of <code>Owner`s, and associate each `Pet</code> with an <code>Owner</code>. Also add unit tests and integration tests for <code>Owner</code>/<code>Owners</code> and updated for <code>Pet</code>/<code>Pets</code>.</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>When running the app, notice the new <code>Owners</code> menu:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/060-01-owners-menu.png"><img src="images/tutorials/pet-clinic/060-01-owners-menu.png" alt="060 01 owners menu" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>which when invoked returns all <code>Owner</code> objects:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/060-02-owners-list.png"><img src="images/tutorials/pet-clinic/060-02-owners-list.png" alt="060 02 owners list" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Each <code>Pet</code> also indicates its corresponding <code>Owner</code>:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/060-03-pets-list.png"><img src="images/tutorials/pet-clinic/060-03-pets-list.png" alt="060 03 pets list" width="600px"></a> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>And, on editing a <code>Pet</code>, a new <code>Owner</code> can be specified using the autoComplete:</p> 
-         </div> 
-         <div class="imageblock"> 
-          <div class="content"> 
-           <a class="image" href="images/tutorials/pet-clinic/060-04-pet-owner-autoComplete.png"><img src="images/tutorials/pet-clinic/060-04-pet-owner-autoComplete.png" alt="060 04 pet owner autoComplete" width="600px"></a> 
-          </div> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_domain_entity">10. Domain entity</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Most domain objects in Apache Isis applications are persistent entities. In the simpleapp archetype the <code>SimpleObject</code> is an example. We can start developing our app by refactoring that class:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>rename the <code>SimpleObject</code> class</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>eg rename to <code>Pet</code></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>if required, rename the <code>SimpleObject</code> class' <code>name</code> property</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>for <code>Pet</code>, can leave <code>name</code> property as is</p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>specify a <a href="../../guides/ugfun/ugfun.html#_ugfun_ui-hints_object-titles-and-icons">title</a></p> </li> 
+          <li> <p>specify an <a href="../../guides/ugfun/ugfun.html#_ugfun_ui-hints_object-titles-and-icons">icon</a></p> </li> 
+          <li> <p>make the entity bookmarkable by adding the <a href="../../guides/rgant/rgant.html#_rgant-DomainObjectLayout_bookmarking"><code>@DomainObjectLayout#bookmarking()</code></a> attribute.</p> </li> 
+          <li> <p>confirm is available from bookmark panel (top-left of Wicket UI)</p> </li> 
+         </ul> 
         </div> 
        </div> 
       </div> 
       <div class="sect1"> 
-       <h2 id="_tg_pet-clinic-extended">3. Pet Clinic (Extended)</h2>
-       <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
-        <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic-extended.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
-        <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
-        <ul class="dropdown-menu">
-         <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic-extended.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
-         <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic-extended.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
-         <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic-extended.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
-         <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_pet-clinic-extended.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
-        </ul>
+       <h2 id="_domain_service">11. Domain service</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Domain services often act as factories or repositories to entities; more generally can be used to "bridge across" to other domains/bounded contexts. Most are application-scoped, but they can also be request-scoped if required.</p> 
+        </div> 
+        <div class="paragraph"> 
+         <p>In the simpleapp archetype the <code>SimpleObjects</code> service is a factory/repository for the original <code>SimpleObject</code> entity. For our app it therefore makes sense to refactor that class into our own first service:</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>rename the <code>SimpleObjects</code> class</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>eg rename to <code>Pets</code></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>review <code>create</code> action (acting as a factory)</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>as per the docs describing <a href="../../guides/ugfun/ugfun.html#_ugfun_crud">how to create or delete objects</a></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>rename if you wish</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>eg <code>newPet(…​)</code> or <code>addPet(…​)</code></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>review <code>listAll</code> action (acting as a repository)</p> </li> 
+          <li> <p>as per the docs describing <a href="../../guides/ugfun/ugfun.html#_ugfun_crud">how to write a custom repository</a></p> </li> 
+          <li> <p>note the annotations on the corresponding domain class (originally called <code>SimpleObject</code>, though renamed by now, eg to <code>Pet</code>)</p> </li> 
+          <li> <p>rename if you wish</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>eg <code>listPets()</code></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>note the <a href="../../guides/rgant/rgant.html#_rgant-DomainService"><code>@DomainService</code></a> annotation</p> </li> 
+          <li> <p>optional: add an action to a return subset of objects</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>use the JDO <code>@Query</code> annotation</p> </li> 
+             <li> <p>see for example the Isisaddons example <a href="https://github.com/isisaddons/isis-app-todoapp">todoapp</a> (not ASF), see <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java#L93">here</a> and <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java#L63">here</a></p> </li> 
+            </ul> 
+           </div> </li> 
+         </ul> 
+        </div> 
        </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_fixture_scripts">12. Fixture scripts</h2> 
        <div class="sectionbody"> 
         <div class="paragraph"> 
-         <p>An extended version of the <a href="#_tg_tutorials_pet-clinic">pet clinic</a> can be found on <a href="https://github.com/johandoornenbal/tutorial_code/blob/master/AsciiDoc/1_petclinic_introduction.adoc">this github repo</a>. It was written by Johan Doornenbal.</p> 
+         <p>Fixture scripts are used to setup the app into a known state. They are great for demo’s and as a time-saver when implementing a feature, and they can also be reused in automated integration tests. We usually also have a fixture script to zap all the (non-reference) data (or some logical subset of the data)</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>rename the <code>SimpleObjectsTearDownFixture</code> class</p> </li> 
+          <li> <p>and update to delete from the appropriate underlying database table(s)</p> </li> 
+          <li> <p>use the injected <a href="../../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_IsisJdoSupport"><code>IsisJdoSupport</code></a> domain service.</p> </li> 
+          <li> <p>refactor/rename the fixture script classes that create instances your entity:</p> </li> 
+          <li> <p><code>RecreateSimpleObjects</code>, which sets up a set of objects for a given scenario</p> </li> 
+          <li> <p><code>SimpleObjectCreate</code> which creates a single object</p> </li> 
+          <li> <p>note that domain services can be injected into these fixture scripts</p> </li> 
+         </ul> 
         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_actions">13. Actions</h2> 
+       <div class="sectionbody"> 
         <div class="paragraph"> 
-         <p>This version also includes a <a href="https://github.com/johandoornenbal/petclinic_mynewcode">sample solution</a>, also as a github repo.</p> 
+         <p>Most business functionality is implemented using actions basically a <code>public</code> method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered immediately; if a collection is returned then the Wicket viewer renders a table. Such collections are sometimes called "standalone" collections.</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>write an action to update the domain property (originally called <code>SimpleObject#name</code>, though renamed by now)</p> </li> 
+          <li> <p>use the <a href="../../guides/rgant/rgant.html#_rgant-ParameterLayout_named"><code>@ParameterLayout(named=…​)</code></a> annotation to specify the name of action parameters</p> </li> 
+          <li> <p>use the <a href="../../guides/rgant/rgant.html#_rgant-Action_semantics"><code>@Action(semanticsOf=…​)</code></a> annotation to indicate the semantics of the action (safe/query-only, idempotent or non-idempotent)</p> </li> 
+          <li> <p>annotate safe action as bookmarkable using <a href="../../guides/rgant/rgant.html#_rgant-ActionLayout_bookmarking"><code>@ActionLayout(bookmarking=…​)</code></a></p> </li> 
+          <li> <p>confirm is available from bookmark panel (top-left of Wicket UI)</p> </li> 
+          <li> <p>optional: add an action to clone an object</p> </li> 
+         </ul> 
         </div> 
        </div> 
       </div> 
       <div class="sect1"> 
-       <h2 id="_tg_stop-scaffolding-start-coding">4. Stop scaffolding, start coding</h2>
-       <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; ">
-        <button type="button" class="btn btn-xs btn-default" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_stop-scaffolding-start-coding.adoc&quot;"><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button>
-        <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
-        <ul class="dropdown-menu">
-         <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_stop-scaffolding-start-coding.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>&nbsp; Edit</a></li>
-         <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_stop-scaffolding-start-coding.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i>&nbsp; History</a></li>
-         <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_stop-scaffolding-start-coding.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i>&nbsp; Raw</a></li>
-         <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/pages/tg/_tg_stop-scaffolding-start-coding.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i>&nbsp; Blame</a></li>
-        </ul>
+       <h2 id="_rest_api">14. REST API</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>As well as exposing the Wicket viewer, Isis also exposes a REST API (an implementation of the <a href="http://restfulobjects.org">Restful Objects spec</a>). All of the functionality of the domain object model is available through this REST API.</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>add Chrome extensions</p> </li> 
+          <li> <p>install <a href="https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en">Postman</a></p> </li> 
+          <li> <p>install <a href="https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en">JSON-View</a></p> </li> 
+          <li> <p>browse to Wicket viewer, install fixtures</p> </li> 
+          <li> <p>browse to the <a href="http://localhost:8080/restful">http://localhost:8080/restful</a> API</p> </li> 
+          <li> <p>invoke the service to list all objects</p> </li> 
+          <li> <p>services</p> </li> 
+          <li> <p>actions</p> </li> 
+          <li> <p>invoke (invoking 0-arg actions is easy; the Restful Objects spec defines how to invoke N-arg actions)</p> </li> 
+         </ul> 
+        </div> 
        </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_specify_action_semantics">15. Specify Action semantics</h2> 
        <div class="sectionbody"> 
         <div class="paragraph"> 
-         <p>This is a half-day tutorial on developing domain-driven apps using Apache Isis. Actually, you could probably spend a full day working through this tutorial if you wanted to, so pick and choose the bits that look interesting. It was originally written by Dan Haywood.</p> 
+         <p>The semantics of an action (whether it is safe/query only, whether it is idempotent, whether it is neither) can be specified for each action; if not specified then Isis assumes non-idempotent. In the Wicket viewer this matters in that only query-only actions can be bookmarked or used as contributed properties/collections. In the RESTful viewer this matters in that it determines the HTTP verb (GET, PUT or POST) that is used to invoke the action.</p> 
+        </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>experiment changing <a href="../../guides/rgant/rgant.html#_rgant-Action_semantics"><code>@Action(semantics=…​)</code></a> on actions</p> </li> 
+          <li> <p>note the HTTP methods exposed in the REST API change</p> </li> 
+          <li> <p>note whether the non-safe actions are bookmarkable (assuming that it has been annotated with <code>@ActionLayout(bookmarking=…​)</code>, that is).</p> </li> 
+         </ul> 
         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_value_properties">16. Value properties</h2> 
+       <div class="sectionbody"> 
         <div class="paragraph"> 
-         <p>There’s a bit of overlap with the <a href="#_tg_tutorials_pet-clinic">Pet Clinic</a> tutorial initially, but it then sets off on its own.</p> 
+         <p>Domain entities have state: either values (primitives, strings) or references to other entities. In this section we explore adding some value properties</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_prerequisites_2">4.1. Prerequisites</h3> 
-         <div class="paragraph"> 
-          <p>You’ll need:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p>Java 7 JDK</p> </li> 
-           <li> <p><a href="http://maven.apache.org/">Maven</a> 3.2.x</p> </li> 
-           <li> <p>an IDE, such as <a href="http://www.eclipse.org/">Eclipse</a> or <a href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>.</p> </li> 
-          </ul> 
-         </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>add some <a href="../../guides/ugfun/ugfun.html#_ugfun_programming-model_properties">value properties</a>; also:</p> </li> 
+          <li> <p>for string properties</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>use the <a href="../../guides/rgant/rgant.html#_rgant-PropertyLayout_multiLine"><code>@PropertyLayout(multiLine=…​)</code></a> annotation to render a text area instead of a text box</p> </li> 
+             <li> <p>use the <a href="../../guides/rgant/rgant.html#_rgant-Property_maxLength"><code>@Property(maxLength=…​)</code></a> annotation to specify the maximum number of characters allowable</p> </li> 
+             <li> <p>use joda date/time properties, bigdecimals and blob/clob properties</p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>use the <a href="../../guides/rgant/rgant.html#_rgant-Property_optionality"><code>@Column(allowsNull=…​)</code></a> annotation specify whether a property is optional or mandatory</p> </li> 
+          <li> <p>use enums for properties (eg as used in the Isis addons example <a href="https://github.com/isisaddons/isis-app-todoapp">todoapp</a>, see <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java#L207">here</a> and <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java#L266">here</a>)</p> </li> 
+          <li> <p>update the corresponding domain service for creating new instances</p> </li> 
+          <li> <p>for all non-optional properties will either need to prompt for a value, or calculate some suitable default</p> </li> 
+          <li> <p>change the implementation of title, if need be</p> </li> 
+          <li> <p>revisit the title, consider whether to use the <a href="../../guides/rgant/rgant.html#_rgant-Title"><code>@Title</code></a> annotation</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>rather than the <a href="../../guides/rgcms/rgcms.html#_rgcms_methods_reserved_title"><code>title()</code></a> method</p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>order the properties using the <a href="../../guides/rgant/rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a>, also <code>@MemberGroupLayout</code></p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>see also the docs on <a href="../../guides/ugvw/ugvw.html#_ugvw_layout_annotation-based">static layouts</a></p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>use the <a href="../../guides/rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a> annotation to position property/action parameter labels either to the LEFT, TOP or NONE</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>do the same for parameters using <a href="../../guides/rgant/rgant.html#_rgant-ParameterLayout"><code>@ParameterLayout</code></a></p> </li> 
+            </ul> 
+           </div> </li> 
+         </ul> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_run_the_archetype_2">4.2. Run the archetype</h3> 
-         <div class="paragraph"> 
-          <p>Run the simpleapp archetype to build an empty Isis application. With the *nix bash shell, use:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mvn archetype:generate  \
-    -D archetypeGroupId=org.apache.isis.archetype \
-    -D archetypeArtifactId=simpleapp-archetype \
-    -D archetypeVersion=1.16.0 \
-    -D groupId=com.mycompany \
-    -D artifactId=myapp \
-    -D version=1.0-SNAPSHOT \
-    -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
-    -B</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Adjust as necessary if using Windows <code>cmd.exe</code> or Powershell.</p> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_reference_properties">17. Reference properties</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Domain entities can also reference other domain entities. These references may be either scalar (single-valued) or vector (multi-valued). In this section we focus on scalar reference properties.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_build_and_run_2">4.3. Build and run</h3> 
-         <div class="paragraph"> 
-          <p>Start off by building the app from the command line:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">cd myapp
-mvn clean install -D mavenmixin-jettyconsole</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Once that’s built then run using:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mvn -pl webapp antrun:run -D mavenmixin-jettyconsole</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>A splash screen should appear offering to start up the app. Go ahead and start; the web browser should be opened at <a href="http://localhost:8080">http://localhost:8080</a></p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Alternatively, you can run using the mvn-jetty-plugin:</p> 
-         </div> 
-         <div class="listingblock"> 
-          <div class="content"> 
-           <pre class="CodeRay highlight"><code data-lang="bash">mvn -pl webapp jetty:run</code></pre> 
-          </div> 
-         </div> 
-         <div class="paragraph"> 
-          <p>This will accomplish the same thing, though the webapp is mounted at a slightly different URL</p> 
-         </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>add some <a href="../../guides/ugfun/ugfun.html#_ugfun_programming-model_properties">reference properties</a></p> </li> 
+          <li> <p>update the corresponding domain service (for creation actoin)</p> </li> 
+          <li> <p>use different techniques to obtain references (shown in drop-down list box)</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>use the <a href="../../guides/rgant/rgant.html#_rgant-DomainObject_bounded"><code>@DomainObjectLayout(bounded=…​)</code></a> annotation on the referenced type if there are only a small number (bounded) of instances</p> </li> 
+             <li> <p>use a <a href="../../guides/rgcms/rgcms.html#_rgcms_methods_prefixes_choices"><code>choices…​()</code></a> supporting method</p> 
+              <div class="ulist"> 
+               <ul> 
+                <li> <p>on a property</p> </li> 
+                <li> <p>on an action parameter</p> </li> 
+               </ul> 
+              </div> </li> 
+             <li> <p>use a <a href="../../guides/rgcms/rgcms.html#_rgcms_methods_prefixes_autoComplete"><code>autoComplete…​()</code></a> supporting method</p> 
+              <div class="ulist"> 
+               <ul> 
+                <li> <p>on a property</p> </li> 
+                <li> <p>on an action parameter</p> </li> 
+               </ul> 
+              </div> </li> 
+            </ul> 
+           </div> </li> 
+         </ul> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_using_the_app_2">4.4. Using the app</h3> 
-         <div class="paragraph"> 
-          <p>Navigate to the Wicket UI (eg <a href="http://localhost:8080/wicket">http://localhost:8080/wicket</a>), and login (sven/pass).</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Once at the home page:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p>install fixtures</p> </li> 
-           <li> <p>list all objects</p> </li> 
-           <li> <p>create a new object</p> </li> 
-           <li> <p>list all objects</p> </li> 
-          </ul> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Go back to the splash screen, and quit the app. Note that the database runs in-memory (using HSQLDB) so any data created will be lost between runs.</p> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_usability_defaults">18. Usability: Defaults</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app.</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_dev_environment_2">4.5. Dev environment</h3> 
-         <div class="paragraph"> 
-          <p>Set up <a href="../../guides/dg/dg.html#_dg_ide">an IDE</a> and import the project to be able to run and debug the app.</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>Then set up a launch configuration and check that you can:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p>Run the app from within the IDE</p> </li> 
-           <li> <p>Run the app in debug mode</p> </li> 
-           <li> <p>Run with different deploymentTypes; note whether prototype actions (those annotated <a href="../../guides/rgant/rgant.html#_rgant-Action_restrictTo"><code>@Action(restrictTo=PROTOTYPING</code></a>) are available or not:</p> </li> 
-           <li> <p><code>--type SERVER_PROTOTYPE</code></p> </li> 
-           <li> <p><code>--type SERVER</code></p> </li> 
-          </ul> 
-         </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>Add <a href="../../guides/ugfun/ugfun.html#_ugfun_drop-downs-and-defaults">defaults</a> for action parameters</p> </li> 
+         </ul> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_explore_codebase_2">4.6. Explore codebase</h3> 
-         <div class="paragraph"> 
-          <p>Apache Isis applications are organized into several Maven modules. Within your IDE navigate to the various classes and correlate back to the generated UI:</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p><code>myapp</code> : parent module</p> </li> 
-           <li> <p><code>myapp-dom</code>: domain objects module</p> </li> 
-           <li> <p>entity: <code>dom.simple.SimpleObject</code></p> </li> 
-           <li> <p>repository: <code>dom.simple.SimpleObjects</code></p> </li> 
-           <li> <p><code>myapp-fixture</code>: fixtures module</p> </li> 
-           <li> <p>fixture script:`fixture.simple.SimpleObjectsFixture`</p> </li> 
-           <li> <p><code>myapp-integtests</code>: integration tests module</p> </li> 
-           <li> <p><code>myapp-webapp</code>: webapp module</p> </li> 
-           <li> <p>(builds the WAR file)</p> </li> 
-          </ul> 
-         </div> 
+       </div> 
+      </div> 
+      <div class="sect1"> 
+       <h2 id="_collections">19. Collections</h2> 
+       <div class="sectionbody"> 
+        <div class="paragraph"> 
+         <p>Returning back to references, Isis also supports vector (multi-valued) references to another object instances in other words collections. We sometimes called these "parented" collections (to distinguish from a "standalone" collection as returned from an action)</p> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_testing_2">4.7. Testing</h3> 
-         <div class="paragraph"> 
-          <p>Testing is of course massively important, and Apache Isis makes both unit testing and (end-to-end) integration testing easy. Building the app from the Maven command line ("mvn clean install") will run all tests, but you should also run the tests from within the IDE.</p> 
-         </div> 
-         <div class="ulist"> 
-          <ul> 
-           <li> <p><code>myapp-dom</code> unit tests</p> </li> 
-           <li> <p>run</p> </li> 
-           <li> <p>inspect, eg</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>SimpleObjectTest</code></p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p><code>myapp-integtests</code> integration tests</p> </li> 
-           <li> <p>run</p> </li> 
-           <li> <p>inspect, eg:</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>integration.tests.smoke.SimpleObjectsTest</code></p> </li> 
-              <li> <p><code>integration.specs.simple.SimpleObjectSpec_listAllAndCreate.feature</code></p> </li> 
-             </ul> 
-            </div> </li> 
-           <li> <p>generated report, eg</p> 
-            <div class="ulist"> 
-             <ul> 
-              <li> <p><code>myapp/integtests/target/cucumber-html-report/index.html</code></p> 
-               <div class="ulist"> 
-                <ul> 
-                 <li> <p>change test in IDE, re-run (in Maven)</p> </li> 
-                </ul> 
-               </div> </li> 
-             </ul> 
-            </div> </li> 
-          </ul> 
-         </div> 
-         <div class="paragraph"> 
-          <p>If you have issues with the integration tests, make sure that the domain classes have been enhanced by the DataNucleus enhancer. (The exact mechanics depends on the IDE being used).</p> 
-         </div> 
+        <div class="ulist"> 
+         <ul> 
+          <li> <p>Ensure that all domain classes implement <code>java.lang.Comparable</code></p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>use the <a href="../../guides/rgcms/rgcms.html#_rgcms_classes_utility_ObjectContracts"><code>ObjectContracts</code></a> utility class to help implement <code>Comparable</code></p> 
+              <div class="ulist"> 
+               <ul> 
+                <li> <p>you can also implement <code>equals()</code>, <code>hashCode()</code>, <code>toString()</code></p> </li> 
+               </ul> 
+              </div> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>Add a <a href="../../guides/ugfun/ugfun.html#_ugfun_programming-model_collections">collection</a> to one of the entities</p> 
+           <div class="ulist"> 
+            <ul> 
+             <li> <p>Use <code>SortedSet</code> as the class</p> </li> 
+             <li> <p>Use the <a href="../../guides/rgant/rgant.html#_rgant-CollectionLayout_render"><code>@CollectionLayout(render=…​)</code></a> annotation to indicate if the collection should be visible or hidden by default</p> </li> 
+            </ul> 
+           </div> </li> 
+          <li> <p>optional: use the <a href="../../guides/rgant/rgant.html#_rgant-CollectionLayout_sortedBy"><code>@CollectionLayout(sortedBy=…​)</code></a> annotation to specify a different comparator than the natural ordering</p> </li> 
+         </ul> 
         </div> 
-        <div class="sect2"> 
-         <h3 id="_prototyping">4.8. Prototyping</h3> 
-         <div class="paragraph"> 
-          <p>Although testing is important, in this tutorial we want to concentrate on how to write features and to iterate quickly. So for now, exclude the <code>integtests</code> module. Later on in the tutorial we’ll add the tests back in so you can learn how to write automated tests for the features of your app.</p> 
-         </div> 
-         <div class="paragraph"> 
-          <p>In t

<TRUNCATED>