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 2015/07/10 09:41:33 UTC

[10/15] isis-site git commit: ISIS-1133: contributors guide

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/rg.html
----------------------------------------------------------------------
diff --git a/content/guides/rg.html b/content/guides/rg.html
index 353b0be..d79b7a8 100644
--- a/content/guides/rg.html
+++ b/content/guides/rg.html
@@ -482,7 +482,7 @@ table.CodeRay td.code>pre{padding:0}
 
         <div id="doc-content">
           <div class="sect1">
-<h2 id="_reference_guide">1. Reference Guide</h2>
+<h2 id="_rg">1. Reference Guide</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This reference guide describes in detail the various elements of the Apache Isis Programming Model.  Most notably these are the <a href="#_rg_annotations">annotations</a> (such as <code>@DomainObject</code>), and the reserved and prefix <a href="#_rg_methods">methods</a> (such as <code>title()</code> and <code>validate&#8230;&#8203;()</code>); it also includes various utility and supporting <a href="#_rg_classes">classes</a>.</p>
@@ -494,12 +494,12 @@ table.CodeRay td.code>pre{padding:0}
 <p>Also part of the reference manual are the details of how to influence the <a href="#_rg_object-layout">UI layout</a> of your domain objects (this is ultimately just a type of metadata), and it catalogues all the various <a href="#_rg_runtime">configuration properties</a> available that influence the behaviour of the framework and the API domain services.</p>
 </div>
 <div class="paragraph">
-<p>This reference guide does <em>not</em> describe how to actually build an Apache Isis application; for that see the <a href="ug.html#">Users' Guide</a>.  The reference guide also does <em>not</em> explain how to setup your development environment; for that see the <a href="dg.html#">Developers' Guide</a>.</p>
+<p>This reference guide does <em>not</em> describe how to actually build an Apache Isis application; for that see the <strong><a href="ug.html#<em>ug">Users' Guide</a></strong>.  The reference guide also does _not</em> explain how to setup your development environment; for that see the <strong><a href="cg.html#_cg">Contributors' Guide</a></strong>.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rg-annotations">2. Annotations</h2>
+<h2 id="_rg_annotations">2. Annotations</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Apache Isis uses annotations to provide additional metadata about the domain objects.</p>
@@ -4556,7 +4556,7 @@ can be used instead, eg:</p>
 <span class="annotation">@javax</span>.jdo.annotations.Persistent(defaultFetchGroup=<span class="string"><span class="delimiter">&quot;</span><span class="content">false</span><span class="delimiter">&quot;</span></span>, columns = {
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">attachment_name</span><span class="delimiter">&quot;</span></span>),
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">attachment_mimetype</span><span class="delimiter">&quot;</span></span>),
-        <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">attachment_bytes</span><span class="delimiter">&quot;</span></span>, jdbcType = <span class="string"><span class="delimiter">&quot;</span><span class="content">BLOB</span><span class="delimiter">&quot;</span></span>, sqlType = <span class="string"><span class="delimiter">&quot;</span><span class="content">BLOB</span><span class="delimiter">&quot;</span></span>)
+        <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">attachment_bytes</span><span class="delimiter">&quot;</span></span>, jdbcType = <span class="string"><span class="delimiter">&quot;</span><span class="content">BLOB</span><span class="delimiter">&quot;</span></span>, sqlType = <span class="string"><span class="delimiter">&quot;</span><span class="content">LONGVARBINARY</span><span class="delimiter">&quot;</span></span>)
 })
 <span class="annotation">@Property</span>(
         domainEvent = AttachmentDomainEvent.class,
@@ -4575,7 +4575,7 @@ can be used instead, eg:</p>
 <span class="annotation">@javax</span>.jdo.annotations.Persistent(defaultFetchGroup=<span class="string"><span class="delimiter">&quot;</span><span class="content">false</span><span class="delimiter">&quot;</span></span>, columns = {
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">doc_name</span><span class="delimiter">&quot;</span></span>),
         <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">doc_mimetype</span><span class="delimiter">&quot;</span></span>),
-        <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">doc_chars</span><span class="delimiter">&quot;</span></span>, jdbcType = <span class="string"><span class="delimiter">&quot;</span><span class="content">CLOB</span><span class="delimiter">&quot;</span></span>, sqlType = <span class="string"><span class="delimiter">&quot;</span><span class="content">CLOB</span><span class="delimiter">&quot;</span></span>)
+        <span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">doc_chars</span><span class="delimiter">&quot;</span></span>, jdbcType = <span class="string"><span class="delimiter">&quot;</span><span class="content">CLOB</span><span class="delimiter">&quot;</span></span>, sqlType = <span class="string"><span class="delimiter">&quot;</span><span class="content">LONGVARCHAR</span><span class="delimiter">&quot;</span></span>)
 })
 <span class="annotation">@Property</span>(
         optionality = Optionality.OPTIONAL
@@ -9198,7 +9198,7 @@ represented in the URL). As such, view models are immutable.</p>
 </table>
 </div>
 <div class="paragraph">
-<p>The view model&#8217;s memento will be derived from the value of the view model object&#8217;s properties. Any <a href="#_rg_annotations_manpage-Property_notPersisted"><code>@Property#notPersisted()</code></a> properties will be excluded from the memento, as will any <a href="http://isis.apache.org/reference/recognized-annotations/Programmatic.html">@Programmatic</a> properties. Properties that are merely <a href="http://isis.apache.org/reference/recognized-annotations/Hidden-deprecated.html">@Hidden</a> are included in the memento.</p>
+<p>The view model&#8217;s memento will be derived from the value of the view model object&#8217;s properties. Any <a href="#<em>rg_annotations_manpage-Property_notPersisted"><code>@Property#notPersisted()</code></a> properties will be excluded from the memento, as will any <a href="#_rg_annotations_manpage-Programmatic"><code>@Programmatic</code></a> properties. Properties that are merely <a href="#_rg_annotations_manpage-Property_hidden">hidden</a> _are</em> included in the memento.</p>
 </div>
 <div class="paragraph">
 <p>Only properties supported by the configured <a href="#_rg_services-api_manpage-MementoService"><code>MementoService</code></a> can be used. The default implementation supports all the value types and persisted entities.</p>
@@ -11585,10 +11585,10 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@RequestScoped</span>                                                  <i class="conum" data-value="1"></i><b>(1)</b>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@RequestScoped</span>                                                   <i class="conum" data-value="1"></i><b>(1)</b>
 <span class="annotation">@DomainService</span>(nature=NatureOfService.DOMAIN)
 <span class="directive">public</span> <span class="type">class</span> <span class="class">ObjectChangedListenerService</span>
-        <span class="directive">implements</span> javax.jdo.listener.StoreLifecycleListener {   <i class="conum" data-value="1"></i><b>(1)</b>
+        <span class="directive">implements</span> javax.jdo.listener.StoreLifecycleListener {   <i class="conum" data-value="2"></i><b>(2)</b>
     <span class="annotation">@Programmatic</span>
     <span class="annotation">@PostConstruct</span>
     <span class="directive">public</span> <span class="type">void</span> init() {
@@ -11600,7 +11600,7 @@ RemoveFrom&#8230;&#8203;()</code></a></p></td>
         getPmFactory().removeInstanceLifecycleListener(<span class="local-variable">this</span>);
     }
     <span class="directive">private</span> PersistenceManager getPersistenceManager() {
-        <span class="keyword">return</span> jdoSupport.getPersistenceManager();              <i class="conum" data-value="3"></i><b>(3)</b>
+        <span class="keyword">return</span> jdoSupport.getPersistenceManager();               <i class="conum" data-value="3"></i><b>(3)</b>
     }
     <span class="annotation">@Programmatic</span>
     <span class="directive">public</span> <span class="type">void</span> preStore (InstanceLifecycleEvent event) { ... }
@@ -19009,11 +19009,11 @@ TODO
 <div class="sect4">
 <h5 id="_the_issue_in_more_detail">The issue in more detail</h5>
 <div class="paragraph">
-<p>Consider the entities:</p>
+<p>Consider the <a href="http://yuml.me/edit/742ad446">entities</a>:</p>
 </div>
-<div class="literalblock">
+<div class="imageblock">
 <div class="content">
-<pre>Party &lt;-&gt;* AgreementRole &lt;*-&gt; Agreement</pre>
+<a class="image" href="images/reference-classes/issue-in-more-detail.png"><img src="images/reference-classes/issue-in-more-detail.png" alt="issue in more detail"></a>
 </div>
 </div>
 <div class="paragraph">
@@ -19581,7 +19581,7 @@ ordered according either to annotations (if present) or fallback/default values.
 </div>
 </div>
 <div class="sect3">
-<h4 id="_downloading_an_initial_layout_file">7.2.2. Downloading an initial layout file</h4>
+<h4 id="_downloading_an_initial_layout">7.2.2. Downloading an initial layout</h4>
 <div class="paragraph">
 <p>The fastest way to get started is to use the (non-ASF) <a href="http://github.com/isisaddons/isis-module-devutils">Isis addons' devutils</a> module to download the layout file (derived from any existing static metadata defined by annotations).</p>
 </div>
@@ -19696,7 +19696,7 @@ thereafter the purpose of the <code>menuOrder</code> is to order the menu servic
 </div>
 </div>
 <div class="sect3">
-<h4 id="_ordering_of_a_service_s_actions_within_a_menu">7.3.2. Ordering of a service&#8217;s actions within a menu</h4>
+<h4 id="_ordering_menu_actions">7.3.2. Ordering menu actions</h4>
 <div class="paragraph">
 <p>For a given service, the actions within a section on a menu is determined by the <code>@MemberOrder</code> annotation. Thus, for
 the <code>Units</code> domain service, its actions are annotated:</p>
@@ -19830,7 +19830,7 @@ using security or using a <a href="ug.html#_ug_more-advanced_decoupling_vetoing-
 </div>
 </div>
 <div class="sect1">
-<h2 id="_rg_runtime">8. Runtime Configuration</h2>
+<h2 id="_rg_runtime">8. Configuration Properties</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Isis' own configuration properties are simple key-value pairs, typically held in the <code>WEBINF/isis.properties</code> file and other related files.  This chapter describes how to configure an Apache Isis application.</p>
@@ -19935,7 +19935,7 @@ using security or using a <a href="ug.html#_ug_more-advanced_decoupling_vetoing-
 <p>Most Apache Isis applications will consist of at least the <a href="ug.html#_ug_wicket-viewer">Wicket viewer</a> and optionally the <a href="ug.html#_ug_restfulobjects-viewer">RestfulObjects viewer</a>.  When both viewers are deployed in the same app, then the bootstrapping is performed by Wicket, and so the deployment type is configured as described in the previous section.</p>
 </div>
 <div class="paragraph">
-<p>In some cases though you may be using Apache Isis to provide a REST API only, that is, you won&#8217;t have deployed the Wicket viewer.  In these cases your app will be bootstrapped using  Apache Isis' <a href="#_rg_runtime_web-xml_servlet-context-listeners"> <code>IsisWebAppBootstrapper</code></a>.</p>
+<p>In some cases though you may be using Apache Isis to provide a REST API only, that is, you won&#8217;t have deployed the Wicket viewer.  In these cases your app will be bootstrapped using  Apache Isis' <a href="#_rg_web-xml_servlet-context-listeners"> <code>IsisWebAppBootstrapper</code></a>.</p>
 </div>
 <div class="paragraph">
 <p>In this case the deployment type is specified through an Apache Isis-specific context parameter, called <code>isis.deploymentType</code>:</p>
@@ -20139,7 +20139,7 @@ using security or using a <a href="ug.html#_ug_more-advanced_decoupling_vetoing-
 <p>It is&#8201;&#8212;&#8201;at least in theory&#8201;&#8212;&#8201;possible to specify a fully qualified class name to replace any of these components.  This is probably feasible for the two security APIs and the <code>services-installer</code> API; but replacing the persistor (JDO/DataNucleus) is much trickier because we rely on the JDO/DN for certain functionality (such as object dirtying and lazy loading) that is not defined within this API.</p>
 </div>
 <div class="paragraph">
-<p>As for the viewers, these are specified indirectly by way of the filters and servlets in the <code>web.xml</code> file (discussed <a href="#_rg_runtime_web-xml">below</a>).  However, the configuration of which viewers to initialize is declared through a context parameter:</p>
+<p>As for the viewers, these are specified indirectly by way of the filters and servlets in the <a href="#_rg_web-xml"><code>web.xml</code></a> file.  However, the configuration of which viewers to initialize is declared through a context parameter:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -20992,7 +20992,55 @@ isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=</code></pre
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rg_runtime_web-xml">8.6. <code>web.xml</code></h3>
+<h3 id="_rg_runtime_application-specific">8.6. Application-specific CSS and JS</h3>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+TODO
+</td>
+</tr>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_rg_runtime_application-specific_application-css">8.6.1. <code>application.css</code></h4>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+TODO - <code>WEB-INF/css/application.css</code>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_rg_runtime_application-specific_application-js">8.6.2. <code>application.js</code></h4>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+TODO - <code>WEB-INF/scripts/application.js</code>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_rg_web-xml">9. <code>web.xml</code></h2>
+<div class="sectionbody">
 <div class="paragraph">
 <p>Apache Isis provides two different viewers, the <a href="ug.html#_ug_wicket-viewer">Wicket viewer</a> and the <a href="ug.html#_ug_restfulobjects-viewer">RestfulObjects viewer</a>.  You can deploy both of these concurrently, or deploy just the Wicket viewer, or deploy just the Restful Objects viewer.  The configuration in <code>web.xml</code> varies accordingly, both in terms of the servlet context listeners, filters and servlets.</p>
 </div>
@@ -21056,13 +21104,13 @@ isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=</code></pre
 <div class="paragraph">
 <p>The following sections detail these various listeners, filters and servlets in more detail.</p>
 </div>
-<div class="sect3">
-<h4 id="_rg_runtime_web-xml_servlet-context-listeners">8.6.1. Servlet Context Listeners</h4>
+<div class="sect2">
+<h3 id="_rg_web-xml_servlet-context-listeners">9.1. Servlet Context Listeners</h3>
 <div class="paragraph">
 <p>Servlet context listeners are used to perform initialization on application startup.  Both Shiro (if configured as the security mechanism) and RestEasy (for the Restful Objects viewer) require their own context listener.  In addition, if the Wicket viewer is <em>not</em> being used, then additional Apache Isis-specific listener is required for bootstrapping of the Apache Isis framework itself.</p>
 </div>
-<div class="sect4">
-<h5 id="__code_environmentloaderlistener_code_shiro"><code>EnvironmentLoaderListener</code> (Shiro)</h5>
+<div class="sect3">
+<h4 id="__code_environmentloaderlistener_code_shiro">9.1.1. <code>EnvironmentLoaderListener</code> (Shiro)</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21086,8 +21134,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_isiswebappbootstrapper_code"><code>IsisWebAppBootstrapper</code></h5>
+<div class="sect3">
+<h4 id="__code_isiswebappbootstrapper_code">9.1.2. <code>IsisWebAppBootstrapper</code></h4>
 <div class="paragraph">
 <p>The <code>IsisWebAppBootstrapper</code> 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.</p>
 </div>
@@ -21129,8 +21177,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_resteasybootstrap_code_resteasy"><code>ResteasyBootstrap</code> (RestEasy)</h5>
+<div class="sect3">
+<h4 id="__code_resteasybootstrap_code_resteasy">9.1.3. <code>ResteasyBootstrap</code> (RestEasy)</h4>
 <div class="paragraph">
 <p>The <code>ResteasyBootstrap</code> servlet context listener initializes the RestEasy runtime, specifying that classes (namely, those specified in Isis' <code>RestfulObjectsApplication</code>) to be exposed as REST resources.  It is required if the Restful Objects viewer is to be deployed.</p>
 </div>
@@ -21185,8 +21233,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect3">
-<h4 id="_rg_runtime_web-xml_servlets">8.6.2. Servlets</h4>
+<div class="sect2">
+<h3 id="_rg_web-xml_servlets">9.2. Servlets</h3>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21199,8 +21247,8 @@ WIP
 </tr>
 </table>
 </div>
-<div class="sect4">
-<h5 id="__code_httpservletdispatcher_code_resteasy"><code>HttpServletDispatcher</code> (RestEasy)</h5>
+<div class="sect3">
+<h4 id="__code_httpservletdispatcher_code_resteasy">9.2.1. <code>HttpServletDispatcher</code> (RestEasy)</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21236,8 +21284,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_resourceservlet_code"><code>ResourceServlet</code></h5>
+<div class="sect3">
+<h4 id="__code_resourceservlet_code">9.2.2. <code>ResourceServlet</code></h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21298,13 +21346,13 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect3">
-<h4 id="_rg_runtime_web-xml_filters">8.6.3. Filters</h4>
+<div class="sect2">
+<h3 id="_rg_web-xml_filters">9.3. Filters</h3>
 <div class="paragraph">
 <p>The order in which filters appear in <code>web.xml</code> matters: first to last they define a pipeline.  This is shown in the above diagrams, and the subsections also list the in the same order that they should appear in your <code>web.xml</code>.</p>
 </div>
-<div class="sect4">
-<h5 id="__code_shirofilter_code_shiro"><code>ShiroFilter</code> (Shiro)</h5>
+<div class="sect3">
+<h4 id="__code_shirofilter_code_shiro">9.3.1. <code>ShiroFilter</code> (Shiro)</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21340,8 +21388,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_isislogonexceptionfilter_code"><code>IsisLogOnExceptionFilter</code></h5>
+<div class="sect3">
+<h4 id="__code_isislogonexceptionfilter_code">9.3.2. <code>IsisLogOnExceptionFilter</code></h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21381,8 +21429,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_resourcecachingfilter_code"><code>ResourceCachingFilter</code></h5>
+<div class="sect3">
+<h4 id="__code_resourcecachingfilter_code">9.3.3. <code>ResourceCachingFilter</code></h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21454,8 +21502,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_wicketfilter_code"><code>WicketFilter</code></h5>
+<div class="sect3">
+<h4 id="__code_wicketfilter_code">9.3.4. <code>WicketFilter</code></h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21522,8 +21570,8 @@ WIP
 </table>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_isissessionfilter_code"><code>IsisSessionFilter</code></h5>
+<div class="sect3">
+<h4 id="__code_isissessionfilter_code">9.3.5. <code>IsisSessionFilter</code></h4>
 <div class="paragraph">
 <p>The <code>IsisSessionFilter</code> is responsible for the (persistence) session management; in effect a wrapper around DataNucleus' <code>PersistenceManager</code> object.  It is only required for the Restful Objects viewer.</p>
 </div>
@@ -21587,8 +21635,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect4">
-<h5 id="__code_isistransactionfilterforrestfulobjects_code"><code>IsisTransactionFilterForRestfulObjects</code></h5>
+<div class="sect3">
+<h4 id="__code_isistransactionfilterforrestfulobjects_code">9.3.6. <code>IsisTransactionFilterForRestfulObjects</code></h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -21625,8 +21673,8 @@ WIP
 </div>
 </div>
 </div>
-<div class="sect3">
-<h4 id="_rg_runtime_web-xml_context-parameters">8.6.4. Configuration Files</h4>
+<div class="sect2">
+<h3 id="_rg_web-xml_context-parameters">9.4. Configuration Files</h3>
 <div class="paragraph">
 <p>However Apache Isis is bootstrapped (using the <code>IsisWicketApplication</code> or using <code>IsisWebAppBootstrapper</code>), it will read a number of configuration files, such as <code>isis.properties</code>.</p>
 </div>
@@ -21655,52 +21703,6 @@ determines which additional configuration files to search for
 </div>
 </div>
 </div>
-<div class="sect2">
-<h3 id="_rg_runtime_application-specific">8.7. Application-specific CSS and JS</h3>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-TODO
-</td>
-</tr>
-</table>
-</div>
-<div class="sect3">
-<h4 id="_rg_runtime_application-specific_application-css">8.7.1. <code>application.css</code></h4>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-TODO - <code>WEB-INF/css/application.css</code>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_rg_runtime_application-specific_application-js">8.7.2. <code>application.js</code></h4>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-TODO - <code>WEB-INF/scripts/application.js</code>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-</div>
 </div>
         </div>
 
@@ -21719,8 +21721,8 @@ TODO - <code>WEB-INF/scripts/application.js</code>
         <div id="toc" class="toc2">
             <div class="fallback-toc">
                 <ul class="sectlevel1">
-<li><a href="#_reference_guide">1. Reference Guide</a></li>
-<li><a href="#_rg-annotations">2. Annotations</a>
+<li><a href="#_rg">1. Reference Guide</a></li>
+<li><a href="#_rg_annotations">2. Annotations</a>
 <ul class="sectlevel2">
 <li><a href="#_rg_annotations_aaa">2.1. Summary</a>
 <ul class="sectlevel3">
@@ -22395,13 +22397,13 @@ TODO - <code>WEB-INF/scripts/application.js</code>
 <li><a href="#_rg_object-layout_dynamic">7.2. Dynamic Object Layout</a>
 <ul class="sectlevel3">
 <li><a href="#_json_layout_file">7.2.1. JSON layout file</a></li>
-<li><a href="#_downloading_an_initial_layout_file">7.2.2. Downloading an initial layout file</a></li>
+<li><a href="#_downloading_an_initial_layout">7.2.2. Downloading an initial layout</a></li>
 </ul>
 </li>
 <li><a href="#_rg_object-layout_application-menu">7.3. Application Menu Layout</a>
 <ul class="sectlevel3">
 <li><a href="#__domainservicelayout">7.3.1. @DomainServiceLayout</a></li>
-<li><a href="#_ordering_of_a_service_s_actions_within_a_menu">7.3.2. Ordering of a service&#8217;s actions within a menu</a></li>
+<li><a href="#_ordering_menu_actions">7.3.2. Ordering menu actions</a></li>
 <li><a href="#_tertiary_menubar">7.3.3. Tertiary menubar</a></li>
 <li><a href="#_isis_add_on_modules">7.3.4. Isis Add-on modules</a></li>
 </ul>
@@ -22413,7 +22415,7 @@ TODO - <code>WEB-INF/scripts/application.js</code>
 </li>
 </ul>
 </li>
-<li><a href="#_rg_runtime">8. Runtime Configuration</a>
+<li><a href="#_rg_runtime">8. Configuration Properties</a>
 <ul class="sectlevel2">
 <li><a href="#_rg_runtime_deployment-types">8.1. Deployment Types</a>
 <ul class="sectlevel3">
@@ -22458,40 +22460,40 @@ TODO - <code>WEB-INF/scripts/application.js</code>
 </li>
 </ul>
 </li>
-<li><a href="#_rg_runtime_web-xml">8.6. <code>web.xml</code></a>
+<li><a href="#_rg_runtime_application-specific">8.6. Application-specific CSS and JS</a>
 <ul class="sectlevel3">
-<li><a href="#_rg_runtime_web-xml_servlet-context-listeners">8.6.1. Servlet Context Listeners</a>
-<ul class="sectlevel4">
-<li><a href="#__code_environmentloaderlistener_code_shiro"><code>EnvironmentLoaderListener</code> (Shiro)</a></li>
-<li><a href="#__code_isiswebappbootstrapper_code"><code>IsisWebAppBootstrapper</code></a></li>
-<li><a href="#__code_resteasybootstrap_code_resteasy"><code>ResteasyBootstrap</code> (RestEasy)</a></li>
+<li><a href="#_rg_runtime_application-specific_application-css">8.6.1. <code>application.css</code></a></li>
+<li><a href="#_rg_runtime_application-specific_application-js">8.6.2. <code>application.js</code></a></li>
 </ul>
 </li>
-<li><a href="#_rg_runtime_web-xml_servlets">8.6.2. Servlets</a>
-<ul class="sectlevel4">
-<li><a href="#__code_httpservletdispatcher_code_resteasy"><code>HttpServletDispatcher</code> (RestEasy)</a></li>
-<li><a href="#__code_resourceservlet_code"><code>ResourceServlet</code></a></li>
 </ul>
 </li>
-<li><a href="#_rg_runtime_web-xml_filters">8.6.3. Filters</a>
-<ul class="sectlevel4">
-<li><a href="#__code_shirofilter_code_shiro"><code>ShiroFilter</code> (Shiro)</a></li>
-<li><a href="#__code_isislogonexceptionfilter_code"><code>IsisLogOnExceptionFilter</code></a></li>
-<li><a href="#__code_resourcecachingfilter_code"><code>ResourceCachingFilter</code></a></li>
-<li><a href="#__code_wicketfilter_code"><code>WicketFilter</code></a></li>
-<li><a href="#__code_isissessionfilter_code"><code>IsisSessionFilter</code></a></li>
-<li><a href="#__code_isistransactionfilterforrestfulobjects_code"><code>IsisTransactionFilterForRestfulObjects</code></a></li>
+<li><a href="#_rg_web-xml">9. <code>web.xml</code></a>
+<ul class="sectlevel2">
+<li><a href="#_rg_web-xml_servlet-context-listeners">9.1. Servlet Context Listeners</a>
+<ul class="sectlevel3">
+<li><a href="#__code_environmentloaderlistener_code_shiro">9.1.1. <code>EnvironmentLoaderListener</code> (Shiro)</a></li>
+<li><a href="#__code_isiswebappbootstrapper_code">9.1.2. <code>IsisWebAppBootstrapper</code></a></li>
+<li><a href="#__code_resteasybootstrap_code_resteasy">9.1.3. <code>ResteasyBootstrap</code> (RestEasy)</a></li>
 </ul>
 </li>
-<li><a href="#_rg_runtime_web-xml_context-parameters">8.6.4. Configuration Files</a></li>
+<li><a href="#_rg_web-xml_servlets">9.2. Servlets</a>
+<ul class="sectlevel3">
+<li><a href="#__code_httpservletdispatcher_code_resteasy">9.2.1. <code>HttpServletDispatcher</code> (RestEasy)</a></li>
+<li><a href="#__code_resourceservlet_code">9.2.2. <code>ResourceServlet</code></a></li>
 </ul>
 </li>
-<li><a href="#_rg_runtime_application-specific">8.7. Application-specific CSS and JS</a>
+<li><a href="#_rg_web-xml_filters">9.3. Filters</a>
 <ul class="sectlevel3">
-<li><a href="#_rg_runtime_application-specific_application-css">8.7.1. <code>application.css</code></a></li>
-<li><a href="#_rg_runtime_application-specific_application-js">8.7.2. <code>application.js</code></a></li>
+<li><a href="#__code_shirofilter_code_shiro">9.3.1. <code>ShiroFilter</code> (Shiro)</a></li>
+<li><a href="#__code_isislogonexceptionfilter_code">9.3.2. <code>IsisLogOnExceptionFilter</code></a></li>
+<li><a href="#__code_resourcecachingfilter_code">9.3.3. <code>ResourceCachingFilter</code></a></li>
+<li><a href="#__code_wicketfilter_code">9.3.4. <code>WicketFilter</code></a></li>
+<li><a href="#__code_isissessionfilter_code">9.3.5. <code>IsisSessionFilter</code></a></li>
+<li><a href="#__code_isistransactionfilterforrestfulobjects_code">9.3.6. <code>IsisTransactionFilterForRestfulObjects</code></a></li>
 </ul>
 </li>
+<li><a href="#_rg_web-xml_context-parameters">9.4. Configuration Files</a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/simpleapp-archetype.html
----------------------------------------------------------------------
diff --git a/content/guides/simpleapp-archetype.html b/content/guides/simpleapp-archetype.html
new file mode 100644
index 0000000..d2ceb1b
--- /dev/null
+++ b/content/guides/simpleapp-archetype.html
@@ -0,0 +1,1033 @@
+<!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>SimpleApp Archetype</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
+        regarding copyright ownership.  The ASF licenses this file
+        to you under the Apache License, Version 2.0 (the
+        "License"); you may not use this file except in compliance
+        with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+        Unless required by applicable law or agreed to in writing,
+        software distributed under the License is distributed on an
+        "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+        KIND, either express or implied.  See the License for the
+        specific language governing permissions and limitations
+        under the License.
+    -->
+
+    <!-- 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">
+        /* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
+/*pre.CodeRay {background-color:#f7f7f8;}*/
+.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
+.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
+.CodeRay .line-numbers strong{font-weight: normal}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top}
+table.CodeRay td.line-numbers{text-align:right}
+table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
+table.CodeRay td.code{padding:0 0 0 .5em}
+table.CodeRay td.code>pre{padding:0}
+.CodeRay .debug{color:#fff !important;background:#000080 !important}
+.CodeRay .annotation{color:#007}
+.CodeRay .attribute-name{color:#000080}
+.CodeRay .attribute-value{color:#700}
+.CodeRay .binary{color:#509}
+.CodeRay .comment{color:#998;font-style:italic}
+.CodeRay .char{color:#04d}
+.CodeRay .char .content{color:#04d}
+.CodeRay .char .delimiter{color:#039}
+.CodeRay .class{color:#458;font-weight:bold}
+.CodeRay .complex{color:#a08}
+.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
+.CodeRay .color{color:#099}
+.CodeRay .class-variable{color:#369}
+.CodeRay .decorator{color:#b0b}
+.CodeRay .definition{color:#099}
+.CodeRay .delimiter{color:#000}
+.CodeRay .doc{color:#970}
+.CodeRay .doctype{color:#34b}
+.CodeRay .doc-string{color:#d42}
+.CodeRay .escape{color:#666}
+.CodeRay .entity{color:#800}
+.CodeRay .error{color:#808}
+.CodeRay .exception{color:inherit}
+.CodeRay .filename{color:#099}
+.CodeRay .function{color:#900;font-weight:bold}
+.CodeRay .global-variable{color:#008080}
+.CodeRay .hex{color:#058}
+.CodeRay .integer,.CodeRay .float{color:#099}
+.CodeRay .include{color:#555}
+.CodeRay .inline{color:#00}
+.CodeRay .inline .inline{background:#ccc}
+.CodeRay .inline .inline .inline{background:#bbb}
+.CodeRay .inline .inline-delimiter{color:#d14}
+.CodeRay .inline-delimiter{color:#d14}
+.CodeRay .important{color:#555;font-weight:bold}
+.CodeRay .interpreted{color:#b2b}
+.CodeRay .instance-variable{color:#008080}
+.CodeRay .label{color:#970}
+.CodeRay .local-variable{color:#963}
+.CodeRay .octal{color:#40e}
+.CodeRay .predefined{color:#369}
+.CodeRay .preprocessor{color:#579}
+.CodeRay .pseudo-class{color:#555}
+.CodeRay .directive{font-weight:bold}
+.CodeRay .type{font-weight:bold}
+.CodeRay .predefined-type{color:inherit}
+.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
+.CodeRay .key{color:#808}
+.CodeRay .key .delimiter{color:#606}
+.CodeRay .key .char{color:#80f}
+.CodeRay .value{color:#088}
+.CodeRay .regexp .delimiter{color:#808}
+.CodeRay .regexp .content{color:#808}
+.CodeRay .regexp .modifier{color:#808}
+.CodeRay .regexp .char{color:#d14}
+.CodeRay .regexp .function{color:#404;font-weight:bold}
+.CodeRay .string{color:#d20}
+.CodeRay .string .string .string{background:#ffd0d0}
+.CodeRay .string .content{color:#d14}
+.CodeRay .string .char{color:#d14}
+.CodeRay .string .delimiter{color:#d14}
+.CodeRay .shell{color:#d14}
+.CodeRay .shell .delimiter{color:#d14}
+.CodeRay .symbol{color:#990073}
+.CodeRay .symbol .content{color:#a60}
+.CodeRay .symbol .delimiter{color:#630}
+.CodeRay .tag{color:#008080}
+.CodeRay .tag-special{color:#d70}
+.CodeRay .variable{color:#036}
+.CodeRay .insert{background:#afa}
+.CodeRay .delete{background:#faa}
+.CodeRay .change{color:#aaf;background:#007}
+.CodeRay .head{color:#f8f;background:#505}
+.CodeRay .insert .insert{color:#080}
+.CodeRay .delete .delete{color:#800}
+.CodeRay .change .change{color:#66f}
+.CodeRay .head .head{color:#f4f}
+
+        pre.CodeRay code {
+            background-color: inherit;
+            border-style: none;
+        }
+
+        pre.CodeRay code > span:first-child {
+            margin-left: -5px;
+        }
+
+        .literalblock pre,
+        .listingblock pre:not(.highlight),
+        .listingblock pre[class="highlight"],
+        .listingblock pre[class^="highlight "],
+        .listingblock pre.CodeRay,
+        .listingblock pre.prettyprint {
+            background: rgb(253, 250, 246);
+         }
+        .sidebarblock .literalblock pre,
+        .sidebarblock .listingblock pre:not(.highlight),
+        .sidebarblock .listingblock pre[class="highlight"],
+        .sidebarblock .listingblock pre[class^="highlight "],
+        .sidebarblock .listingblock pre.CodeRay,
+        .sidebarblock .listingblock pre.prettyprint {
+            background: rgb(253, 250, 246);
+         }
+
+    <style>
+
+    <style>
+    .github-fork-ribbon-wrapper.right {
+        position: fixed;
+    }
+    .github-fork-ribbon {
+        background: #090;
+    }
+    .github-fork-ribbon a:hover {
+        background:#0D0;
+        color:#fff;
+        font-size: 1.1em;
+    }
+    </style>
+
+    <style>
+        @media only screen and (min-width: 40.063em) {
+          .top-bar {
+            .contain-to-grid .top-bar {
+                max-width: 80rem;
+            }
+          }
+        }
+        .row {
+            max-width: 80rem;
+        }
+    </style>
+
+    <style>
+        .extended-quote,
+        .extended-quote-first {
+            margin-left: 40px;
+            margin-right: 40px;
+            font-style: italic;
+        }
+        .extended-quote-attribution {
+            text-align: right;
+            margin-right: 100px;
+            color: #10B061;
+        }
+
+        .extended-quote-first:before {
+            content: "\201c";
+            float: left;
+            font-size: 2.75em;
+            font-weight: bold;
+            line-height: 0.6em;
+            margin-left: -0.6em;
+            color: #003b6b;
+            text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
+        }
+    </style>
+
+    <style>
+        body {
+          position: relative;
+        }
+
+        *:not(pre) a > code {
+            color: #210DDC;
+        }
+
+        *:not(pre) > code {
+            background-color: inherit;
+            border: none;
+            font-weight: normal;
+        }
+
+        body div#toc li,
+        body div#toc2 li {
+            list-style-type: none;
+        }
+
+        div#doc-content {
+            margin-top: 30px;
+        }
+
+        body div#toc li.active-region:before,
+        body div#toc2 li.active-region:before {
+            content: "\00BB \0020";
+            margin-left: -12px;
+        }
+
+        body div#toc li a.active,
+        body div#toc2 li a.active {
+            color: red;
+        }
+
+        body div#toc.toc,
+        body div#toc.toc2 {
+            position: fixed;
+            left: auto;
+            padding-top: 60px;
+            z-index: auto;
+            background-color: white;
+            border-left-color: #eee;
+            border-left-style: solid;
+            border-right: none;
+            min-height: 2000px;
+        }
+
+    </style>
+
+    <style>
+
+        @media only screen and (min-width: 768px) {
+          #toc.toc2 ul ul { margin-left: -10px; }
+        }
+
+
+        body div#toc .tocify-subheader ul {
+            margin-bottom: 0px;
+        }
+
+        body div#toc .tocify-subheader li {
+            font-size: 14px;
+        }
+        .tocify li.tocify-item, .tocify ul.tocify-item {
+            line-height: 24px;
+        }
+
+        body div#toc li.tocify-item.active:before,
+        body div#toc2 li.tocify-item.active:before {
+            content: "\00BB \0020";
+            margin-left: -12px;
+        }
+
+        body div#toc li.tocify-item.active a,
+        body div#toc2 li.tocify-item.active a {
+            color: red;
+        }
+    </style>
+
+    <style>
+        footer {
+            margin-top: 1000px;
+        }
+    </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;*/
+           padding: 0.3em 0.6em 0.25em 0.6em;
+        }
+        @media only screen and (min-width: 1280px)
+        #toc.toc2 {
+          /*width: 20em;*/
+          width: 25em;
+        }
+
+        #doc-content a {
+          color: #210DDC;
+        }
+
+        .top-bar h1 {
+            border-bottom: inherit;
+        }
+
+        h2 {
+          margin-top: 80px;
+        }
+        h3 {
+          margin-top: 40px;
+        }
+        h4,h5 {
+          margin-top: 30px;
+        }
+
+        .admonitionblock.tip > table td.content {
+            color: #10B061;
+        }
+        .admonitionblock.note > table td.content {
+            color: #B509AB;
+        }
+        .admonitionblock.important > table td.content {
+            color: #D5810A;
+        }
+
+        .admonitionblock .title {
+            font-size: larger;
+            font-style: italic;
+        }
+
+        .imageblock img {
+            margin-bottom: 10px;
+        }
+    </style>
+
+    <style>
+        /* from http://ben.balter.com/2014/03/13/pages-anchor-links/ */
+        .header-link {
+          position: absolute;
+          left: -0.5em;
+          opacity: 0;
+
+          /*
+          -webkit-transition: opacity 0.2s ease-in-out 0.1s;
+          -moz-transition: opacity 0.2s ease-in-out 0.1s;
+          -ms-transition: opacity 0.2s ease-in-out 0.1s;
+          */
+        }
+
+        h2:hover .header-link,
+        h3:hover .header-link,
+        h4:hover .header-link,
+        h5:hover .header-link,
+        h6:hover .header-link {
+          opacity: 1;
+        }
+    </style>
+
+    <style>
+        .top-bar
+        {
+            -webkit-transition-duration: .5s;
+            transition-duration: .5s;
+
+            -webkit-transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
+            transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
+
+            -webkit-transition-property: -webkit-transform;
+            transition-property: transform;
+        }
+
+        /*
+        http://osvaldas.info/auto-hide-sticky-header
+        MIT license
+        */
+        .header--hidden
+        {
+            -webkit-transform: translateY( -100% );
+            -ms-transform: translateY( -100% );
+            transform: translateY( -100% );
+
+            transition-duration: .5s;
+            transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
+            -webkit-transition-property: -webkit-transform;
+            transition-property: transform;
+        }
+    </style>
+
+    <style>
+        #doc-content a.guide {
+            color: white;
+        }
+    </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">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 id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>The quickest way to get started with Apache Isis is to run the simple archetype.  This will generate a very simple one-class domain model, called <code>SimpleObject</code>, with a single property <code>name</code>.  There is also a corresponding <code>SimpleObjectRepository</code> domain service.  From this you can easily rename these initial classes, and extend to build up your own Apache Isis domain application.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_generating_the_app">Generating the App</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Create a new directory, and <code>cd</code> into that directory.</p>
+</div>
+<div class="paragraph">
+<p>Then run the following command:</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.8.0 \
+    -D groupId=com.mycompany \
+    -D artifactId=myapp \
+    -D version=1.0-SNAPSHOT \
+    -B</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>where:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>groupId</code> represents your own organization, and</p>
+</li>
+<li>
+<p><code>artifactId</code> is a unique identifier for this app within your organization.</p>
+</li>
+<li>
+<p><code>version</code> is the initial (snapshot) version of your app</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The archetype generation process will then run; it only takes a few seconds.</p>
+</div>
+<div class="sect2">
+<h3 id="_snapshot_release">Snapshot release</h3>
+<div class="paragraph">
+<p>We also maintain the archetype for the most current <code>-SNAPSHOT</code>; an app generated with this archetype will contain the latest features of Apache Isis, but the usual caveats apply: some features still in development may be unstable.</p>
+</div>
+<div class="paragraph">
+<p>The process is almost identical to that for stable releases, however the <code>archetype:generate</code> goal is called with slightly different arguments:</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.9.0-SNAPSHOT \
+    -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>where as before:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>groupId</code> represents your own organization, and</p>
+</li>
+<li>
+<p><code>artifactId</code> is a unique identifier for this app within your organization.</p>
+</li>
+<li>
+<p><code>version</code> is the initial (snapshot) version of your app</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>but also:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>archetypeVersion</code> is the SNAPSHOT version of Apache Isis.</p>
+</li>
+<li>
+<p><code>archetypeRepository</code> specifies the location of our snapshot repo (hosted on [CloudBees](<a href="http://www.cloudbees.com)" class="bare">http://www.cloudbees.com)</a>), and</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The archetype generation process will then run; it only takes a few seconds.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_building_the_app">Building the App</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Switch into the root directory of your newly generated app, and build your app:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">cd myapp
+mvn clean install</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>where <code>myapp</code> is the <code>artifactId</code> entered above.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_running_the_app">Running the App</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The <code>simpleapp</code> archetype generates a single WAR file, configured to run both the <a href="./guides/ug.html#_ug_wicket-viewer">Wicket viewer</a> and the <a href="./guides/ug.html#_ug_restfulobjects-viewer">Restful Objects viewer</a>.   The archetype also configures the JDO/DataNucleus objectstore to use an in-memory HSQLDB connection.</p>
+</div>
+<div class="paragraph">
+<p>Once you&#8217;ve built the app, you can run the WAR in a variety of ways.</p>
+</div>
+<div class="paragraph">
+<p>The recommended approach when getting started is to run the self-hosting version of the WAR, allowing Apache Isis to run as a standalone app; for example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">java -jar webapp/target/myapp-webapp-1.0-SNAPSHOT-jetty-console.jar</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This can also be accomplished using an embedded Ant target provided in the build script:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">mvn -P self-host antrun:run</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The first is to simply deploying the generated WAR (<code>webapp/target/myapp-webapp-1.0-SNAPSHOT.war</code>) to a servlet container.</p>
+</div>
+<div class="paragraph">
+<p>Alternatively, you could run the WAR in a Maven-hosted Jetty instance, though you need to <code>cd</code> into the <code>webapp</code> module:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">cd webapp
+mvn jetty:run -D jetty.port=9090</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>In the above, we&#8217;ve passed in a property to indicate a different port from the default port (8080).</p>
+</div>
+<div class="paragraph">
+<p>Note that if you use <code>mvn jetty:run</code>, then the context path changes; check the console output (eg [<a href="http://localhost:9090/myapp-webapp" class="bare">http://localhost:9090/myapp-webapp</a>](<a href="http://localhost:9090/myapp-webapp)" class="bare">http://localhost:9090/myapp-webapp)</a>).</p>
+</div>
+<div class="paragraph">
+<p>Finally, you can also run the app by deploying to a standalone servlet container such as [Tomcat](<a href="http://tomcat.apache.org" class="bare">http://tomcat.apache.org</a>).</p>
+</div>
+<div class="sect2">
+<h3 id="_with_fixtures">With Fixtures</h3>
+<div class="paragraph">
+<p>It is also possible to start the application with a pre-defined set of data; useful for demos or manual exploratory
+testing.  This is done by specifying a <em>fixture script</em> on the command line:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">java -jar webapp/target/myapp-webapp-1.0-SNAPSHOT-jetty-console.jar \
+     --initParam isis.persistor.datanucleus.install-fixtures=true  \
+     --initParam isis.fixtures=fixture.simple.SimpleObjectsFixture</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>where (in the above example) <code>fixture.simple.SimpleObjectsFixture</code> is the fully qualified class name of the fixture
+script to be run.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_the_app">Using the App</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The archetype provides a welcome page that explains the classes and files generated, and provides detailed guidance and what to do next.</p>
+</div>
+<div class="paragraph">
+<p>The app itself is configured to run using shiro security, as configured in the <code>WEB-INF/shiro.ini</code> config file.  To log in, use <code>sven/pass</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_modifying_the_app">Modifying the App</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Once you are familiar with the generated app, you&#8217;ll want to start modifying it.  Check out our the <a href=".guides/ug.html">Users' Guide</a>, which has how-tos and a complete reference guide (as well as some background concepts and discussion of more advanced techniques).</p>
+</div>
+<div class="paragraph">
+<p>If you use IntelliJ or Eclipse, you&#8217;ll also want to set up your IDE; this is also described in the <a href="cg.adoc#_cg_ide">Contributors' Guide</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_app_structure">App Structure</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>As noted above, the generated app is a very simple application consisting of a single domain object that can be easily renamed and extended. The intention is not to showcase all of Apache Isis' capabilities; rather it is to allow you to very easily modify the generated application (eg rename <code>SimpleObject</code> to <code>Customer</code>) without having to waste time deleting lots of generated code.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 1. Table caption</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Module</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">myapp</p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>The parent (aggregator) module</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">myapp-dom</p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>The domain object model, consisting of &lt;tt&gt;SimpleObject&lt;/tt&gt; and &lt;tt&gt;SimpleObjects&lt;/tt&gt; (repository) domain service.</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">myapp-fixture</p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>Domain object fixtures used for initializing the system when being demo&#8217;ed or for unit testing.</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">myapp-integtests</p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>End-to-end integration tests, that exercise from the UI through to the database</p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">myapp-webapp</p></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>Run as a webapp (from <code>web.xml</code>) using either the Wicket viewer or the RestfulObjects viewer</p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>If you run into issues, please don&#8217;t hesitate to ask for help on the <a href="../../support.html">users mailing list</a>.</p>
+</div>
+</div>
+</div>
+        </div>
+
+        <footer>
+          <hr>
+          <p class="small">
+          Copyright &copy; 2010~2015 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>
+        </footer>
+
+    </div>
+
+    <div id="doc-content-right" class="large-3 medium-3 xcolumns">
+        <div id="toc" class="toc2">
+            <div class="fallback-toc">
+                <ul class="sectlevel1">
+<li><a href="#_generating_the_app">Generating the App</a>
+<ul class="sectlevel2">
+<li><a href="#_snapshot_release">Snapshot release</a></li>
+</ul>
+</li>
+<li><a href="#_building_the_app">Building the App</a></li>
+<li><a href="#_running_the_app">Running the App</a>
+<ul class="sectlevel2">
+<li><a href="#_with_fixtures">With Fixtures</a></li>
+</ul>
+</li>
+<li><a href="#_using_the_app">Using the App</a></li>
+<li><a href="#_modifying_the_app">Modifying the App</a></li>
+<li><a href="#_app_structure">App Structure</a></li>
+</ul>
+            </div>
+        </div>
+    </div>
+
+</div>
+
+
+<script src="../js/foundation/5.5.1/vendor/jquery.js"></script>
+<script src="../js/foundation/5.5.1/foundation.min.js"></script>
+
+
+<link href="../css/jquery.tocify/1.9.0/jquery.tocify.css" rel="stylesheet">
+<script src="../js/jqueryui/1.11.4/jquery-ui.min.js"></script>
+<script src="../js/jquery.tocify/1.9.0/jquery.tocify.js"></script>
+
+
+
+<script type="text/javascript">
+    $(function () {
+        $("#toc").tocify({
+            scrollTo: 50,
+            extendPage: true,
+            context: "#doc-content",
+            highlightOnScroll: true,
+            hashGenerator: "pretty",
+            hideEffect: "slideUp",
+            selectors: "h2,h3,h4,h5"
+        });
+        $(".fallback-toc").hide();
+    });
+</script>
+
+<script type="text/javascript">
+
+  /****
+
+      $(document).foundation();
+
+      $(document).ready(function(){
+        // Cache selectors
+        var lastId,
+            topMenu = $("div#toc ul"),
+            topMenuHeight = 100,
+
+            menuItems = topMenu.find("a"),
+            menuItemsHrefs = menuItems.map(function(){
+              var item = $($(this).attr("href"));
+              if (item.length) { return item; }
+            });
+
+        // Bind click handler to menu items to scroll animation
+        menuItems.click(function(e){
+          var href = $(this).attr("href"),
+              offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
+          $('html, body').stop().animate({
+              scrollTop: offsetTop
+          }, 300);
+
+          e.preventDefault();
+        });
+
+        // Bind to scroll of window
+        $(  window ).scroll(function(){
+
+           // Get container scroll position
+           var fromTop = $(this).scrollTop()+topMenuHeight;
+
+           var cur = menuItemsHrefs.map(function(){
+             if ($(this).offset().top < fromTop)
+               return this;
+           });
+
+           // Get the id of the current element
+           cur = cur[cur.length-1];
+
+           var id = cur && cur.length ? cur[0].id : "";
+
+           if (lastId !== id && id) {
+               scrollTo(id);
+           }
+
+           window.history.pushState({}, "", window.location.origin + window.location.pathname + "#" + id);
+        });
+
+        scrollTo = function(id) {
+              lastId = id;
+
+              menuItems
+                .removeClass("active");
+
+              menuItems
+                .parents()
+                .removeClass("active-region");
+
+              menuItems
+                .parents("ul").hide();
+
+              menuItems
+                .filter("[href=#"+id+"]")
+                .addClass("active");
+
+              menuItems
+                .filter("[href=#"+id+"]")
+                .parents("ul").show();
+
+              menuItems
+                .filter("[href=#"+id+"]")
+                .parent().children("ul").show();
+
+              menuItems
+                .filter("[href=#"+id+"]")
+                .parents("li").addClass("active-region");
+
+        }
+      menuItems
+        .removeClass("active");
+
+      menuItems
+        .parents()
+        .removeClass("active-region");
+
+        var syncMenuItem;
+        if(window.location.hash!=="") {
+            var menuItemFor = $.grep(menuItems, function(e) {
+                return e.hash === window.location.hash;
+            });
+            console.log(menuItemFor);
+            if(menuItemFor.length === 1) {
+                syncMenuItem = menuItemFor[0];
+            }
+        }
+
+        if(!syncMenuItem){
+            syncMenuItem = menuItems[0];
+        }
+
+        $(syncMenuItem).click();
+
+      });
+
+    ***/
+
+</script>
+
+<script type="text/javascript">
+
+$(document).ready(function(){
+    if("Documentation" === "SimpleApp Archetype") {
+        console.log( "processing 'Documentation'" );
+
+        $("#doc-content-left").removeClass("large-9").removeClass("medium-9").addClass("large-12").addClass("medium-12");
+        $("#doc-content-right").removeClass("large-3").removeClass("medium-3").hide();
+    }
+
+});
+
+</script>
+
+
+<script>
+
+$( document ).ready(function() {
+
+    (function() {
+      $(function() {
+        return $("#doc-content h2, #doc-content h3, #doc-content h4, #doc-content h5, #doc-content h6").each(function(i, el) {
+          var $el, icon, id;
+          $el = $(el);
+          id = $el.attr('id');
+          icon = '<i class="fa fa-link"></i>';
+          if (id) {
+            return $el.prepend($("<a />").addClass("header-link").attr("href", "#" + id).html(icon));
+          }
+        });
+      });
+    }).call(this);
+
+
+
+	/*
+        http://osvaldas.info/auto-hide-sticky-header
+        MIT license
+	*/
+	;( function( $, window, document, undefined )
+	{
+		'use strict';
+
+		var elSelector		= '.header',
+			elClassHidden	= 'header--hidden',
+			throttleTimeout	= 500,
+			$element		= $( elSelector );
+
+		if( !$element.length ) return true;
+
+		var $window			= $( window ),
+			wHeight			= 0,
+			wScrollCurrent	= 0,
+			wScrollBefore	= 0,
+			wScrollDiff		= 0,
+			$document		= $( document ),
+			dHeight			= 0,
+
+			throttle = function( delay, fn )
+			{
+				var last, deferTimer;
+				return function()
+				{
+					var context = this, args = arguments, now = +new Date;
+					if( last && now < last + delay )
+					{
+						clearTimeout( deferTimer );
+						deferTimer = setTimeout( function(){ last = now; fn.apply( context, args ); }, delay );
+					}
+					else
+					{
+						last = now;
+						fn.apply( context, args );
+					}
+				};
+			};
+
+		$window.on( 'scroll', throttle( throttleTimeout, function()
+		{
+			dHeight			= $document.height();
+			wHeight			= $window.height();
+			wScrollCurrent	= $window.scrollTop();
+			wScrollDiff		= wScrollBefore - wScrollCurrent;
+
+			if( wScrollCurrent <= 0 ) // scrolled to the very top; element sticks to the top
+				$element.removeClass( elClassHidden );
+
+			else if( wScrollDiff > 0 && $element.hasClass( elClassHidden ) ) // scrolled up; element slides in
+				$element.removeClass( elClassHidden );
+
+			else if( wScrollDiff < 0 ) // scrolled down
+			{
+				if( wScrollCurrent + wHeight >= dHeight && $element.hasClass( elClassHidden ) ) // scrolled to the very bottom; element slides in
+					$element.removeClass( elClassHidden );
+
+				else // scrolled down; element slides out
+					$element.addClass( elClassHidden );
+			}
+
+			wScrollBefore = wScrollCurrent;
+		}));
+
+	})( jQuery, window, document );
+
+
+});
+</script>
+
+</body>
+</html>