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 2017/03/08 00:00:23 UTC

[25/44] isis-site git commit: ISIS-1594: provide an 'edit' button

http://git-wip-us.apache.org/repos/asf/isis-site/blob/83a3755a/content/guides/tg.html
----------------------------------------------------------------------
diff --git a/content/guides/tg.html b/content/guides/tg.html
index ec9a266..e3fbd90 100644
--- a/content/guides/tg.html
+++ b/content/guides/tg.html
@@ -1,12 +1,10 @@
 <!doctype html>
 <html class="no-js" lang="en">
-<head>
-    <meta charset="utf-8"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-
-    <title>Tutorials</title>
-
-    <!--
+ <head> 
+  <meta charset="utf-8"> 
+  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
+  <title>Tutorials</title> 
+  <!--
         Licensed to the Apache Software Foundation (ASF) under one
         or more contributor license agreements.  See the NOTICE file
         distributed with this work for additional information
@@ -23,31 +21,21 @@
         KIND, either express or implied.  See the License for the
         specific language governing permissions and limitations
         under the License.
-    -->
-
-    <!-- No caching headers -->
-    <meta http-equiv="cache-control" content="no-cache" />
-    <meta http-equiv="pragma" content="no-cache" />
-    <meta http-equiv="expires" content="-1" />
-
-
-    <!-- TODO: need to (re)instate CDN in the future (not using for now just so can develop off-line -->
-    <link href="../css/foundation/5.5.1/foundation.css" rel="stylesheet" />
-    <script src="../js/foundation/5.5.1/vendor/modernizr.js"></script>
-    <link href="../css/asciidoctor/colony.css" rel="stylesheet">
-    <link href="../css/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
-
-
-
-
-    <link href="../css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.css" rel="stylesheet" />
-    <!--[if lt IE 9]>
+    --> 
+  <!-- No caching headers --> 
+  <meta http-equiv="cache-control" content="no-cache"> 
+  <meta http-equiv="pragma" content="no-cache"> 
+  <meta http-equiv="expires" content="-1"> 
+  <!-- TODO: need to (re)instate CDN in the future (not using for now just so can develop off-line --> 
+  <link href="../css/foundation/5.5.1/foundation.css" rel="stylesheet"> 
+  <script src="../js/foundation/5.5.1/vendor/modernizr.js"></script> 
+  <link href="../css/asciidoctor/colony.css" rel="stylesheet"> 
+  <link href="../css/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"> 
+  <link href="../css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.css" rel="stylesheet"> 
+  <!--[if lt IE 9]>
       <link href="../css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.ie.css" rel="stylesheet" />
-    <![endif]-->
-
-
-
-    <style type="text/css">
+    <![endif]--> 
+  <style type="text/css">
         pre code {
             background-color: inherit;
             border-style: none;
@@ -192,9 +180,8 @@ table.CodeRay td.code>pre{padding:0}
         color:#fff;
         font-size: 1.1em;
     }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         @media only screen and (min-width: 40.063em) {
           .top-bar {
             .contain-to-grid .top-bar {
@@ -205,9 +192,8 @@ table.CodeRay td.code>pre{padding:0}
         .row {
             max-width: 80rem;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         .extended-quote,
         .extended-quote-first {
             margin-left: 40px;
@@ -231,9 +217,8 @@ table.CodeRay td.code>pre{padding:0}
             text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
         }
         
-    </style>
-
-    <style>
+    </style> 
+  <style>
         body {
           position: relative;
         }
@@ -255,6 +240,7 @@ table.CodeRay td.code>pre{padding:0}
 
         div#doc-content {
             margin-top: 30px;
+            padding-top: 30px;
         }
 
         div.documentation-page table.frame-all {
@@ -286,9 +272,8 @@ table.CodeRay td.code>pre{padding:0}
             min-height: 2000px;
         }
 
-    </style>
-
-    <style>
+    </style> 
+  <style>
 
         @media only screen and (min-width: 768px) {
           #toc.toc2 ul ul { margin-left: -10px; }
@@ -316,15 +301,13 @@ table.CodeRay td.code>pre{padding:0}
         body div#toc2 li.tocify-item.active a {
             color: red;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         footer {
             margin-top: 1000px;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         /* overriding colony.css stylesheet */
         .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] {
            /*padding: 1.25em 1.5625em 1.125em 1.5625em;*/
@@ -372,9 +355,8 @@ table.CodeRay td.code>pre{padding:0}
         .imageblock img {
             margin-bottom: 10px;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         /* from http://ben.balter.com/2014/03/13/pages-anchor-links/ */
         .header-link {
           position: absolute;
@@ -395,9 +377,8 @@ table.CodeRay td.code>pre{padding:0}
         h6:hover .header-link {
           opacity: 1;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         .top-bar
         {
             -webkit-transition-duration: .5s;
@@ -425,200 +406,150 @@ table.CodeRay td.code>pre{padding:0}
             -webkit-transition-property: -webkit-transform;
             transition-property: transform;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
         #doc-content a.guide {
             color: white;
         }
-    </style>
-
-    <style>
+    </style> 
+  <style>
+        .tocify {
+            margin-top: 80px;
+        }
+    </style> 
+  <style>
         .tocify {
             margin-top: 80px;
         }
-    </style>
-
-
-</script>
-
-</head>
-<body>
-
-<<div class="github-fork-ribbon-wrapper right" style="position: fixed;">
-    <div class="github-fork-ribbon">
-        <a href="https://github.com/apache/isis#fork-destination-box">Fork me on GitHub</a>
-    </div>
-</div>
-
-
-<div class="row">
-
-    <div class="fixed contain-to-grid header">
-        <nav class="top-bar" data-topbar role="navigation" style="max-width: 80rem">
-            <ul class="title-area">
-                <li class="name">
-                    <h1>
-                        <a href="/index.html">Apache Isis&trade;</a>
-                    </h1>
-                </li>
-                <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
-                <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li>
-            </ul>
-
-            <section class="top-bar-section">
-                <ul class="right">
-
-                    <li class="has-form">
-                       <FORM class="searchbox navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
-                        <div class="row collapse">
-                            <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
-                            <INPUT type="hidden" name="cof" value="FORID:0">
-                            <INPUT class="form-control" name="q" type="text" placeholder="Search">
-                        </div>
-                    </FORM>
-                     </li>
-
-                </ul>
-
-                <!-- Left Nav Section -->
-                <ul class="left">
-
-                    <li><a href="/documentation.html">Documentation</a></li>
-                    <li><a href="/downloads.html">Downloads</a></li>
-                    <li><a href="/help.html">Help</a></li>
-                    <li><a href="/asf.html">@ASF</a></li>
-
-                </ul>
-
-            </section>
-        </nav>
-    </div>
-</div>
-
-<div class="row">
-
-    <div id="doc-content-left" class="large-9 medium-9 columns">
-
-
-        <div id="doc-content">
-          <div class="sect1">
-<h2 id="_tg">1. Tutorials</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>This page contains a couple of tutorials for you to follow.</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&#8217;s a good cookbook to follow when you&#8217;re readng to take things further.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Have fun!</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_tg_tutorials_pet-clinic">2. Pet Clinic</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="ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.
-It was originally written by Jeroen van der Wal.</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>
-</div>
-<div class="imageblock">
-<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>
-</div>
-</div>
-<div class="paragraph">
-<p>This supports the following use cases:</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>
-</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>
-</div>
-<div class="sect2">
-<h3 id="_prerequisites">2.1. Prerequisites</h3>
-<div class="paragraph">
-<p>You&#8217;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 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>
-<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>
-</table>
-</div>
-<div class="paragraph">
-<p>Run the simpleapp archetype to build an empty Isis application:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn archetype:generate  \
+    </style>  
+ </head> 
+ <body> 
+  <div class="row"> 
+   <div class="fixed contain-to-grid header"> 
+    <nav class="top-bar" data-topbar role="navigation" style="max-width: 80rem"> 
+     <ul class="title-area"> 
+      <li class="name"> <h1> <a href="/index.html">Apache Isis\u2122</a> </h1> </li> 
+      <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone --> 
+      <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li> 
+     </ul> 
+     <section class="top-bar-section"> 
+      <ul class="right"> 
+       <li class="has-form"> 
+        <form class="searchbox navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse"> 
+         <div class="row collapse"> 
+          <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya"> 
+          <input type="hidden" name="cof" value="FORID:0"> 
+          <input class="form-control" name="q" type="text" placeholder="Search"> 
+         </div> 
+        </form> </li> 
+      </ul> 
+      <!-- Left Nav Section --> 
+      <ul class="left"> 
+       <li><a href="/documentation.html">Documentation</a></li> 
+       <li><a href="/downloads.html">Downloads</a></li> 
+       <li><a href="/help.html">Help</a></li> 
+       <li><a href="/asf.html">@ASF</a></li> 
+      </ul> 
+     </section> 
+    </nav> 
+   </div> 
+  </div> 
+  <div class="row"> 
+   <div id="doc-content-left" class="large-9 medium-9 columns"> 
+    <div id="doc-content">
+     <button type="button" class="button secondary" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/tg.adoc&quot;" style="float: right; font-size: small; padding: 6px;  "><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button> 
+     <div class="sect1"> 
+      <h2 id="_tg">1. Tutorials</h2>
+      <button type="button" class="button secondary" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/_tg.adoc&quot;" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button> 
+      <div class="sectionbody"> 
+       <div class="paragraph"> 
+        <p>This page contains a couple of tutorials for you to follow.</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\u2019s a good cookbook to follow when you\u2019re readng to take things further.</p> </li> 
+        </ul> 
+       </div> 
+       <div class="paragraph"> 
+        <p>Have fun!</p> 
+       </div> 
+      </div> 
+     </div> 
+     <div class="sect1"> 
+      <h2 id="_tg_tutorials_pet-clinic">2. Pet Clinic</h2>
+      <button type="button" class="button secondary" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/_tg_tutorials_pet-clinic.adoc&quot;" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button> 
+      <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="ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>. It was originally written by Jeroen van der Wal.</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> 
+       </div> 
+       <div class="imageblock"> 
+        <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> 
+        </div> 
+       </div> 
+       <div class="paragraph"> 
+        <p>This supports the following use cases:</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> 
+        </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> 
+       </div> 
+       <div class="sect2"> 
+        <h3 id="_prerequisites">2.1. Prerequisites</h3> 
+        <div class="paragraph"> 
+         <p>You\u2019ll 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 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:</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 \
@@ -626,863 +557,745 @@ It was originally written by Jeroen van der Wal.</p>
     -D artifactId=petclinic \
     -D version=1.0-SNAPSHOT \
     -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
-    -B</code></pre>
-</div>
-</div>
-<div class="admonitionblock note">
-<table>
-<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 from 1.13.2.</p>
-</div>
-</td>
-</tr>
-</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>
-<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>
-<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 class="sect2">
-<h3 id="_dev_environment">2.5. Dev environment</h3>
-<div class="paragraph">
-<p>Set up <a href="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&#8217;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 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>
-<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>
-<div class="sect2">
-<h3 id="_update_pom_files">2.8. Update POM files</h3>
-<div class="admonitionblock tip">
-<table>
-<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>
-</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 class="sect2">
-<h3 id="_delete_the_bdd_specs">2.9. Delete the BDD specs</h3>
-<div class="admonitionblock tip">
-<table>
-<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>
-</table>
-</div>
-<div class="paragraph">
-<p>During this tutorial we&#8217;re going to keep the integration tests in-sync with the code, but we&#8217;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>
-<div class="sect2">
-<h3 id="_rename_artifacts">2.10. Rename artifacts</h3>
-<div class="admonitionblock tip">
-<table>
-<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>
-</table>
-</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&#8217;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&#8217;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&#8217;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>
+    -B</code></pre> 
+         </div> 
+        </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 from 1.13.2.</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> 
+       <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> 
+       <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 class="sect2"> 
+        <h3 id="_dev_environment">2.5. Dev environment</h3> 
+        <div class="paragraph"> 
+         <p>Set up <a href="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\u2019s 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 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> 
+       <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> 
+       <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 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\u2019re going to keep the integration tests in-sync with the code, but we\u2019re 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> 
+       <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> 
+        <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\u2019re 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\u2019s 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\u2019s 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">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span>)
+         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">&quot;</span><span class="content">version</span><span class="delimiter">&quot;</span></span>)
-<span class="annotation">@javax</span>.jdo.annotations.Unique(name=<span class="string"><span class="delimiter">&quot;</span><span class="content">Pet_name_UNQ</span><span class="delimiter">&quot;</span></span>, members = {<span class="string"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>})         <i class="conum" data-value="4"></i><b>(4)</b>
-<span class="annotation">@ObjectType</span>(<span class="string"><span class="delimiter">&quot;</span><span class="content">PET</span><span class="delimiter">&quot;</span></span>)                                                             <i class="conum" data-value="5"></i><b>(5)</b>
+        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>
-<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>
-</table>
-</div>
-<div class="admonitionblock note">
-<table>
-<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=&#8230;&#8203;)</code> and <code>@DomainObjectLayout(bookmarking=&#8230;&#8203;)</code></p>
-</div>
-</td>
-</tr>
-</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">&quot;</span><span class="content">10</span><span class="delimiter">&quot;</span></span>)
+}</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=\u2026\u200b)</code> and <code>@DomainObjectLayout(bookmarking=\u2026\u200b)</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>
-<div class="sect2">
-<h3 id="_update_package_names">2.11. Update package names</h3>
-<div class="admonitionblock tip">
-<table>
-<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>
-</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 class="sect2">
-<h3 id="_add_code_petspecies_code_enum">2.12. Add <code>PetSpecies</code> enum</h3>
-<div class="admonitionblock tip">
-<table>
-<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>
-</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 {
+}</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> 
+       <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 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> {
+}</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">&quot;</span><span class="content">false</span><span class="delimiter">&quot;</span></span>)
+    <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>
-<div class="sect2">
-<h3 id="_icon_to_reflect_pet_species">2.13. Icon to reflect pet species</h3>
-<div class="admonitionblock tip">
-<table>
-<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>
-</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&#8217;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> {
+}</code></pre> 
+         </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>Update fixtures, unit tests and integration tests.</p> 
+        </div> 
+       </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\u2019s 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>
-<div class="sect2">
-<h3 id="_add_pet_s_code_owner_code">2.14. Add pet&#8217;s <code>Owner</code></h3>
-<div class="admonitionblock tip">
-<table>
-<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>
-</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">...
+}</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> 
+       <div class="sect2"> 
+        <h3 id="_add_pet_s_code_owner_code">2.14. Add pet\u2019s <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">&quot;</span><span class="content">findByName</span><span class="delimiter">&quot;</span></span>, language = <span class="string"><span class="delimiter">&quot;</span><span class="content">JDOQL</span><span class="delimiter">&quot;</span></span>,
-                value = <span class="string"><span class="delimiter">&quot;</span><span class="content">SELECT </span><span class="delimiter">&quot;</span></span>
-                        + <span class="string"><span class="delimiter">&quot;</span><span class="content">FROM dom.owners.Owner </span><span class="delimiter">&quot;</span></span>
-                        + <span class="string"><span class="delimiter">&quot;</span><span class="content">WHERE name.matches(:name)</span><span class="delimiter">&quot;</span></span>)
+                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(&#8230;&#8203;)</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> {
+}</code></pre> 
+         </div> 
+        </div> 
+        <div class="paragraph"> 
+         <p>and <code>findByName(\u2026\u200b)</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">&quot;</span><span class="content">Name</span><span class="delimiter">&quot;</span></span>)
+            <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">&quot;</span><span class="content">.*%s.*</span><span class="delimiter">&quot;</span></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">&quot;</span><span class="content">findByName</span><span class="delimiter">&quot;</span></span>,
-                        <span class="string"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>, nameArg));
+                        <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> ... {
+}</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">&quot;</span><span class="content">false</span><span class="delimiter">&quot;</span></span>)
+    <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>
-<div class="sect1">
-<h2 id="_tg_tutorials_pet-clinic-extended">3. Pet Clinic (Extended)</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>
-</div>
-<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>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_tg_tutorials_stop-scaffolding-start-coding">4. Stop scaffolding, start coding</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>
-</div>
-<div class="paragraph">
-<p>There&#8217;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>
-</div>
-<div class="sect2">
-<h3 id="_prerequisites_2">4.1. Prerequisites</h3>
-<div class="paragraph">
-<p>You&#8217;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 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:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn archetype:generate  \
+}</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> 
+     <div class="sect1"> 
+      <h2 id="_tg_tutorials_pet-clinic-extended">3. Pet Clinic (Extended)</h2>
+      <button type="button" class="button secondary" onclick="window.location.href=&quot;https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/_tg_tutorials_pet-clinic-extended.adoc&quot;" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "><i class="fa fa-pencil-square-o"></i>&nbsp;Edit</button> 
+      <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/johandoornenb

<TRUNCATED>