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:24 UTC

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

Repository: isis-site
Updated Branches:
  refs/heads/asf-site 3e76e8b0e -> e6efa0930


http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/versioning-policy.html
----------------------------------------------------------------------
diff --git a/content/versioning-policy.html b/content/versioning-policy.html
deleted file mode 100644
index 2ac36f9..0000000
--- a/content/versioning-policy.html
+++ /dev/null
@@ -1,805 +0,0 @@
-<!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>Versioning Policy</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><br/><br/></p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_semantic_versioning">Semantic Versioning</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Starting from v1.0.0, Apache Isis has adopted <a href="http://semver.org">semantic versioning</a> for its versioning policy.</p>
-</div>
-<div class="paragraph">
-<p>Version numbers are in the form <code>x.y.z</code>:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>x is bumped up whenever there a breaking API change</p>
-</li>
-<li>
-<p>y is bumped up whenever there is a new feature that does not break API</p>
-</li>
-<li>
-<p>z is bumped up for minor bug fixes.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>This scheme would be adopted for both core and components.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_version_numbers_may_not_be_used">Version numbers may not be used</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Version ranges may not be used.  If necessary, end-users can use <code>&lt;dependencyManagement</code> elements to have combine components built against different versions of core.</p>
-</div>
-<div class="paragraph">
-<p>That said, this can introduce instability and so generally we recommend that end-users configure the <code>maven-enforcer-plugin</code> and its <a href="http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html">DependencyConvergence</a> rule.  This will help avoid "jar hell" (components having conflicting dependencies of core).</p>
-</div>
-<div class="paragraph">
-<p>If there is a conflict, we would ask that end-users engage with Apache Isis committers to have an updated version of the component(s) pushed out.</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="#_semantic_versioning">Semantic Versioning</a></li>
-<li><a href="#_version_numbers_may_not_be_used">Version numbers may not be used</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" === "Versioning Policy") {
-        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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/cg.html
----------------------------------------------------------------------
diff --git a/content/guides/cg.html b/content/guides/cg.html
new file mode 100644
index 0000000..822ef36
--- /dev/null
+++ b/content/guides/cg.html
@@ -0,0 +1,6910 @@
+<!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>Contributors Guide</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 class="sect1">
+<h2 id="_cg">1. Contributors' Guide</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This contributors' guide has three related audiences:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>programmers who want to just use Apache Isis to build applications, and want help setting up their development environment or to build their code from the command line (eg to execute within a continuous integration server such as Jenkins)</p>
+</li>
+<li>
+<p>programmers who want to contribute back patches (bug fixes, new features) either to the codebase or the framework&#8217;s documentation</p>
+</li>
+<li>
+<p>committers of Apache Isis itself who want guidance on release process, publishing documents and other related procedures.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The developer' guide is <em>not</em> intended as a reference manual; for that see the <strong><a href="rg.html#<em>rg">Reference Guide</a></strong>.  This guide also does _not</em> describe how to actually build an Apache Isis application; for that see the <strong><a href="ug.html#_ug">Users' Guide</a></strong>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cg_ide">2. Using an IDE</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The vast majority of Java developers use an IDE to assist with developing their code, and we highly recommend that you do like wise as you develop your Apache Isis applications using an IDE.  Apache Isis is built with Maven, and all modern IDEs can import Maven projects.</p>
+</div>
+<div class="paragraph">
+<p>This chapter shows how to setup and use two of the most popular IDEs, IntelliJ IDEA and Eclipse.</p>
+</div>
+<div class="sect2">
+<h3 id="_cg_ide_intellij">2.1. Developing using IntelliJ IDEA</h3>
+<div class="paragraph">
+<p>This section describes how to install and setup IntelliJ, then how to import an application into IntelliJ and run it.</p>
+</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>This document relates to IntelliJ Community Edition 14.1.x, with screenshots taken for Windows.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_installing_and_setting_up">2.1.1. Installing and Setting up</h4>
+<div class="paragraph">
+<p>This section covers installation and setup.</p>
+</div>
+<div class="sect4">
+<h5 id="_download_and_install">Download and Install</h5>
+<div class="paragraph">
+<p><a href="https://www.jetbrains.com/idea/download/">Download</a> latest version of IntelliJ Community Edition, and install:</p>
+</div>
+<div class="paragraph">
+<p>Start the wizard, click through the welcome page:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/010-installing/010-welcome-page.png" alt="010 welcome page" width="400px">
+</div>
+<div class="title">Figure 1. IntelliJ Installation Wizard - Welcome page</div>
+</div>
+<div class="paragraph">
+<p>Choose the location to install the IDE:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/010-installing/020-choose-location.png" alt="020 choose location" width="400px">
+</div>
+<div class="title">Figure 2. IntelliJ Installation Wizard - Choose Location</div>
+</div>
+<div class="paragraph">
+<p>Adjust any installation options as you prefer:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/010-installing/030-installation-options.png" alt="030 installation options" width="400px">
+</div>
+<div class="title">Figure 3. IntelliJ Installation Wizard - Installation Options</div>
+</div>
+<div class="paragraph">
+<p>and the start menu:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/010-installing/040-start-menu-folder.png" alt="040 start menu folder" width="400px">
+</div>
+<div class="title">Figure 4. IntelliJ Installation Wizard - Start Menu Folder</div>
+</div>
+<div class="paragraph">
+<p>and finish up the wizard:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/010-installing/050-completing.png" alt="050 completing" width="400px">
+</div>
+<div class="title">Figure 5. IntelliJ Installation Wizard - Completing the Wizard</div>
+</div>
+<div class="paragraph">
+<p>Later on we&#8217;ll specify the Apache Isis/ASF code style settings, so for now select <code>I do not want to import settings</code>:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/010-installing/060-import-settings-or-not.png" alt="060 import settings or not" width="400px">
+</div>
+<div class="title">Figure 6. IntelliJ Installation Wizard - Import Settings</div>
+</div>
+<div class="paragraph">
+<p>Finally, if you are young and trendy, set the UI theme to Darcula:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/010-installing/070-set-ui-theme.png" alt="070 set ui theme" width="600px">
+</div>
+<div class="title">Figure 7. IntelliJ Installation Wizard Set UI Theme</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_new_project">New Project</h5>
+<div class="paragraph">
+<p>In IntelliJ a project can contain multiple modules; these need not be physically located together.  (If you are previously an Eclipse user, you can think of it as similar to an Eclipse workspace).</p>
+</div>
+<div class="paragraph">
+<p>Start off by creating a new project:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/010-new-project-create.png" alt="010 new project create" width="400px">
+</div>
+<div class="title">Figure 8. IntelliJ Create New Project</div>
+</div>
+<div class="paragraph">
+<p>We want to create a new <strong>Java</strong> project:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/020-java-project-setup-jdk.png" alt="020 java project setup jdk" width="600px">
+</div>
+<div class="title">Figure 9. IntelliJ Create New Project - Create a Java project</div>
+</div>
+<div class="paragraph">
+<p>We therefore need to specify the JDK.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+at the time of writing Apache Isis supports only Java 7; Java 8 is scheduled for support in Apache Isis v1.9.0
+</td>
+</tr>
+</table>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/030-java-project-select-jdk.png" alt="030 java project select jdk" width="300px">
+</div>
+<div class="title">Figure 10. IntelliJ Create New Java Project - Select the JDK</div>
+</div>
+<div class="paragraph">
+<p>Specify the directory containing the JDK:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/050-name-and-location.png" alt="050 name and location" width="400px">
+</div>
+<div class="title">Figure 11. IntelliJ Create New Project - Select the JDK location</div>
+</div>
+<div class="paragraph">
+<p>Finally allow IntelliJ to create the directory for the new project:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/060-create-dir.png" alt="060 create dir" width="200px">
+</div>
+<div class="title">Figure 12. IntelliJ Create New Project</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_import_settings">Import Settings</h5>
+<div class="paragraph">
+<p>Next we need to configure IntelliJ with ASF/Apache Isis' standard templates and coding conventions.  These are bundled as the <code>settings.jar</code> JAR file <a href="resources/appendices/dev-env/intellij/isis-settings.jar">download from the Apache Isis website</a>).</p>
+</div>
+<div class="paragraph">
+<p>Import using: <code>File &gt; Import Settings</code>, and specify the directory that you have downloaded the file to:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/030-import-settings/010-settings-import-jar.png" alt="010 settings import jar" width="400px">
+</div>
+<div class="title">Figure 13. IntelliJ Import Settings - Specify JAR file</div>
+</div>
+<div class="paragraph">
+<p>Select all the (two) categories of settings available in the JAR file:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/030-import-settings/020-select-all.png" alt="020 select all" width="300px">
+</div>
+<div class="title">Figure 14. IntelliJ Import Settings - Select all categories</div>
+</div>
+<div class="paragraph">
+<p>And then restart:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/030-import-settings/030-restart.png" alt="030 restart" width="200px">
+</div>
+<div class="title">Figure 15. IntelliJ Import Settings - Restart</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_other_settings">Other Settings</h5>
+<div class="paragraph">
+<p>There are also some other miscellaneous settings that we recommend that you adjust (though these are not critical).</p>
+</div>
+<div class="paragraph">
+<p>First, specify an up-to-date Maven installation, using <code>File &gt; Settings</code> (or <code>IntelliJ &gt; Preferences</code> if on MacOS):</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/040-other-settings/010-maven-installation.png" alt="010 maven installation" width="600px">
+</div>
+<div class="title">Figure 16. IntelliJ Other Settings - Maven Installation</div>
+</div>
+<div class="paragraph">
+<p>Still on the Maven settings page, configure as follows:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/040-other-settings/020-maven-configuration.png" alt="020 maven configuration" width="600px">
+</div>
+<div class="title">Figure 17. IntelliJ Other Settings - Maven Configuration</div>
+</div>
+<div class="paragraph">
+<p>On the compiler settings page, ensure that <code>build automatically</code> is enabled (and optionally <code>compile independent modules in parallel</code>):</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/040-other-settings/030-build-automatically.png" alt="030 build automatically" width="600px">
+</div>
+<div class="title">Figure 18. IntelliJ Other Settings - Compiler Settings</div>
+</div>
+<div class="paragraph">
+<p>On the auto import page, check the <code>optimize imports on the fly</code> and <code>add unambiguous imports on the fly</code></p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/040-other-settings/040-auto-import.png" alt="040 auto import" width="600px">
+</div>
+<div class="title">Figure 19. IntelliJ Other Settings - Auto Import</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_plugins">Plugins</h5>
+<div class="paragraph">
+<p>You might also want to set up some additional plugins, using <code>File &gt; Settings &gt; Plugins</code> (or equivalently <code>File &gt; Other Settings &gt; Configure Plugins</code>).</p>
+</div>
+<div class="paragraph">
+<p>Recommended are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="https://plugins.jetbrains.com/plugin/7179?pr=idea">Maven Helper</a> plugin</p>
+<div class="paragraph">
+<p>More on this below.</p>
+</div>
+</li>
+<li>
+<p><a href="https://github.com/asciidoctor/asciidoctor-intellij-plugin">AsciiDoctor</a> plugin</p>
+<div class="paragraph">
+<p>Useful if you are doing any authoring of documents.</p>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Some others you might like to explore are:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/050-some-plugins/020-some-plugins-confirmation.png" alt="020 some plugins confirmation" width="600px">
+</div>
+<div class="title">Figure 20. IntelliJ Plugins</div>
+</div>
+<div class="sect5">
+<h6 id="_maven_helper_plugin">Maven Helper Plugin</h6>
+<div class="paragraph">
+<p>This plugin provides a couple of great features.  One is better visualization of dependency trees (similar to Eclipse).</p>
+</div>
+<div class="paragraph">
+<p>If you open a <code>pom.xml</code> file, you&#8217;ll see an additional "Dependencies" tab:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/010-dependency-tab.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/010-dependency-tab.png" alt="010 dependency tab" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>Clicking on this gives a graphical tree representation of the dependencies, similar to that obtained by <code>mvn dependency:tree</code>, but filterable.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/020-dependency-as-tree.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/020-dependency-as-tree.png" alt="020 dependency as tree" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>The plugin also provides the ability to easily run a Maven goal on a project:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/030-maven-run-goal.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/030-maven-run-goal.png" alt="030 maven run goal" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>This menu can also be bound to a keystroke so that it is available as a pop-up:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/040-maven-quick-run.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/040-maven-quick-run.png" alt="040 maven quick run" width="600px"></a>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_importing_and_managing_maven_modules">2.1.2. Importing and Managing Maven Modules</h4>
+<div class="paragraph">
+<p>Let&#8217;s load in some actual code!  We do this by importing the Maven modules.</p>
+</div>
+<div class="paragraph">
+<p>First up, open up the Maven tool window (<code>View &gt; Tool Windows &gt; Maven Projects</code>).  You can then use the 'plus' button to add Maven modules.  In the screenshot you can see we&#8217;ve loaded in Apache Isis core; the modules are listed in the <em>Maven Projects</em> window and corresponding (IntelliJ) modules are shown in the <em>Projects</em> window:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/010-maven-modules-view.png" alt="010 maven modules view" width="730px">
+</div>
+<div class="title">Figure 21. IntelliJ Maven Module Management - Importing Maven modules</div>
+</div>
+<div class="paragraph">
+<p>We can then import another module (from some other directory).  For example, here we are importing the Isis Addons' todoapp example:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/020-adding-another-module.png" alt="020 adding another module" width="400px">
+</div>
+<div class="title">Figure 22. IntelliJ Maven Module Management - Importing another Module</div>
+</div>
+<div class="paragraph">
+<p>You should then see the new Maven module loaded in the <em>Projects</em> window and also the <em>Maven Projects</em> window:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/030-other-module-added.png" alt="030 other module added" width="730px">
+</div>
+<div class="title">Figure 23. IntelliJ Maven Module Management -</div>
+</div>
+<div class="paragraph">
+<p>If any dependencies are already loaded in the project, then IntelliJ will automatically update the CLASSPATH to resolve to locally held modules (rather from <code>.m2/repository</code> folder).  So, for example (assuming that the <code>&lt;version&gt;</code> is correct, of course), the Isis todoapp will have local dependencies on the Apache Isis core.</p>
+</div>
+<div class="paragraph">
+<p>You can press F4 (or use <code>File &gt; Project Structure</code>) to see the resolved classpath for any of the modules loaded into the project.</p>
+</div>
+<div class="paragraph">
+<p>If you want to focus on one set of code (eg the Isis todoapp but not Apache Isis core) then you <em>could</em> remove the module; but better is to ignore those modules.  This will remove from the the <em>Projects</em> window but keep them available in the <em>Maven Projects</em> window for when you next want to work on them:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/040-ignoring-modules.png" alt="040 ignoring modules" width="730px">
+</div>
+<div class="title">Figure 24. IntelliJ Maven Module Management - Ignoring Modules</div>
+</div>
+<div class="paragraph">
+<p>Confirm that it&#8217;s ok to ignore these modules:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/050-ignoring-modules-2.png" alt="050 ignoring modules 2" width="300px">
+</div>
+<div class="title">Figure 25. IntelliJ Maven Module Management - Ignoring Modules (ctd)</div>
+</div>
+<div class="paragraph">
+<p>All being well you should see that the <em>Projects</em> window now only contains the code you are working on.  Its classpath dependencies will be adjusted (eg to resolve to Apache Isis core from <code>.m2/repository</code>):</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/060-ignored-modules.png" alt="060 ignored modules" width="730px">
+</div>
+<div class="title">Figure 26. IntelliJ Maven Module Management - Updated Projects Window</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_running">2.1.3. Running</h4>
+<div class="paragraph">
+<p>Let&#8217;s see how to run both the app and the tests.</p>
+</div>
+<div class="sect4">
+<h5 id="_running_the_app">Running the App</h5>
+<div class="paragraph">
+<p>Once you&#8217;ve imported your Isis application, we should run it.  We do this by creating a Run configuration, using <code>Run &gt; Edit Configurations</code>.</p>
+</div>
+<div class="paragraph">
+<p>Set up the details as follows:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/010-run-configuration.png" alt="010 run configuration" width="600px">
+</div>
+<div class="title">Figure 27. IntelliJ Running the App - Run Configuration</div>
+</div>
+<div class="paragraph">
+<p>We specify the <code>Main class</code> to be <code>org.apache.isis.WebServer</code>; this is a wrapper around Jetty.  It&#8217;s possible to pass program arguments to this (eg to automatically install fixtures), but for now leave this blank.</p>
+</div>
+<div class="paragraph">
+<p>Also note that <code>Use classpath of module</code> is the webapp module for your app, and that the <code>working directory</code> is <code>$MODULE_DIR$</code>.</p>
+</div>
+<div class="paragraph">
+<p>Next, and most importantly, configure the DataNucleus enhancer to run for your <code>dom</code> goal.  This can be done by defining a Maven goal to run before the app:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/020-datanucleus-enhancer-goal.png" alt="020 datanucleus enhancer goal" width="400px">
+</div>
+<div class="title">Figure 28. IntelliJ Running the App - Datanucleus Enhancer Goal</div>
+</div>
+<div class="paragraph">
+<p>The <code>-o</code> flag in the goal means run off-line; this will run faster.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+if you forget to set up the enhancer goal, or don&#8217;t run it on the correct (dom) module, then you will get all sorts of errors when you startup.  These usually manifest themselves as class cast exception in DataNucleus.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>You should now be able to run the app using <code>Run &gt; Run Configuration</code>.  The same configuration can also be used to debug the app if you so need.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_running_the_unit_tests">Running the Unit Tests</h5>
+<div class="paragraph">
+<p>The easiest way to run the unit tests is just to right click on the <code>dom</code> module in the <em>Project Window</em>, and choose run unit tests.  Hopefully your tests will pass (!).</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/030-running-unit-tests.png" alt="030 running unit tests" width="600px">
+</div>
+<div class="title">Figure 29. IntelliJ Running the App - Unit Tests Run Configuration</div>
+</div>
+<div class="paragraph">
+<p>As a side-effect, this will create a run configuration, very similar to the one we manually created for the main app:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/040-running-unit-tests-run-configuration.png" alt="040 running unit tests run configuration" width="600px">
+</div>
+<div class="title">Figure 30. IntelliJ Running the App - Unit Tests Run Configuration</div>
+</div>
+<div class="paragraph">
+<p>Thereafter, you should run units by selecting this configuration (if you use the right click approach you&#8217;ll end up with lots of run configurations, all similar).</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_running_the_integration_tests">Running the Integration Tests</h5>
+<div class="paragraph">
+<p>Integration tests can be run in the same way as unit tests, however the <code>dom</code> module must also have been enhanced.</p>
+</div>
+<div class="paragraph">
+<p>One approach is to initially run the tests use the right click on the <code>integtests</code> module; the tests will fail because the code won&#8217;t have been enhanced, but we can then go and update the run configuration to run the datanucleus enhancer goal (same as when running the application):</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/050-running-integration-tests-run-configuration.png" alt="050 running integration tests run configuration" width="600px">
+</div>
+<div class="title">Figure 31. IntelliJ Running the App - Integration Tests Run Configuration</div>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_hints_and_tips">2.1.4. Hints and Tips</h4>
+<div class="sect4">
+<h5 id="_keyboard_shortcuts_cheat_sheets">Keyboard Shortcuts Cheat Sheets</h5>
+<div class="paragraph">
+<p>You can download 1-page PDFs cheat sheets for IntelliJ&#8217;s keyboard shortcuts:
+* for <a href="https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard.pdf">Windows</a>
+* for MacOS:https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf[MacOS]</p>
+</div>
+<div class="paragraph">
+<p>Probably the most important shortcut on them is for <code>Find Action</code>:
+- <code>ctrl-shift-A</code> on Windows
+- <code>cmd-shift-A</code> on MacOS.</p>
+</div>
+<div class="paragraph">
+<p>This will let you search for any action just by typing its name.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_switching_between_tool_windows_and_editors">Switching between Tool Windows and Editors</h5>
+<div class="paragraph">
+<p>The Tool Windows are the views around the editor (to left, bottom and right).  It&#8217;s possible to move these around to your preferred locations.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Use <code>alt-1</code> through <code>alt-9</code> (or <code>cmd-1</code> through <code>alt-9</code>) to select the tool windows</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Press it twice and the tool window will hide itself; so can use to toggle</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>If in the <em>Project Window</em> (say) and hit enter on a file, then it will be shown in the editor, but (conveniently) the focus remains in the tool window.  To switch to the editor, just press <code>Esc</code>.</p>
+<div class="ulist">
+<ul>
+<li>
+<p>If in the <em>Terminal Window</em>, you&#8217;ll need to press <code>Shift-Esc</code>.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>If on the editor and want to locate the file in (say) the <em>Project Window</em>, use <code>alt-F1</code>.</p>
+</li>
+<li>
+<p>To change the size of any tool window, use <code>ctrl-shift-arrow</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Using these shortcuts you can easily toggle between the tool windows and the editor, without using the mouse.  Peachy!</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_navigating_around">Navigating Around</h5>
+<div class="paragraph">
+<p>For all of the following, you don&#8217;t need to type every letter, typing "ab" will actually search for ".<strong>a.*b.</strong>".</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>to open classes or files or methods that you know the name of:</p>
+<div class="ulist">
+<ul>
+<li>
+<p><code>ctrl-N</code> to open class</p>
+</li>
+<li>
+<p><code>ctrl-shift-N</code> to open a file</p>
+</li>
+<li>
+<p>(bit fiddly this) <code>ctrl-shift-alt-N</code> to search for any symbol.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>open up dialog of recent files: <code>ctrl-E</code></p>
+</li>
+<li>
+<p>search for any file: <code>shift-shift</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Navigating around:
+* find callers of a method (the call hierarchy): <code>ctrl-alt-H</code>
+* find subclasses or overrides: <code>ctrl-alt-B</code>
+* find superclasses/interface/declaration: <code>ctrl-B</code></p>
+</div>
+<div class="paragraph">
+<p>Viewing the structure (ie outline) of a class
+* <code>ctrl-F12</code> will pop-up a dialog showing all members
+** hit <code>ctrl-F12</code> again to also see inherited members</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_editing">Editing</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Extend selection using <code>ctrl-W</code></p>
+<div class="ulist">
+<ul>
+<li>
+<p>and contract it down again using <code>ctrl-shift-W</code></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>to duplicate a line, it&#8217;s <code>ctrl-D</code></p>
+<div class="ulist">
+<ul>
+<li>
+<p>if you have some text selected (or even some lines), it&#8217;ll actually duplicate the entire selection</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>to delete a line, it&#8217;s <code>ctrl-X</code></p>
+</li>
+<li>
+<p>to move a line up or down: <code>shift-alt-up</code> and <code>shift-alt-down</code></p>
+<div class="ulist">
+<ul>
+<li>
+<p>if you have selected several lines, it&#8217;ll move them all togethe</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p><code>ctrl-shift-J</code> can be handy for joining lines together</p>
+<div class="ulist">
+<ul>
+<li>
+<p>just hit enter to split them apart (even in string quotes; IntelliJ will "do the right thing")</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_intentions_and_code_completion">Intentions and Code Completion</h5>
+<div class="paragraph">
+<p>Massively useful is the "Intentions" popup; IntelliJ tries to guess what you might want to do.  You can activate this using`alt-enter`, whenever you see a lightbulb/tooltip in the margin of the current line.</p>
+</div>
+<div class="paragraph">
+<p>Code completion usually happens whenever you type '.'.  You can also use <code>ctrl-space</code> to bring these up.</p>
+</div>
+<div class="paragraph">
+<p>In certain circumstances (eg in methods0) you can also type <code>ctrl-shift-space</code> to get a smart list of methods etc that you might want to call.  Can be useful.</p>
+</div>
+<div class="paragraph">
+<p>Last, when invoking a method, use <code>ctrl-P</code> to see the parameter types.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_refactoring">Refactoring</h5>
+<div class="paragraph">
+<p>Loads of good stuff on the <code>Refactor</code> menu; most used are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Rename (<code>shift-F6</code>)</p>
+</li>
+<li>
+<p>Extract</p>
+<div class="ulist">
+<ul>
+<li>
+<p>method: <code>ctrl-alt-M</code></p>
+</li>
+<li>
+<p>variable: <code>ctrl-alt-V</code></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Inline method/variable: <code>ctrl-alt-N</code></p>
+</li>
+<li>
+<p>Change signature</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>If you can&#8217;t remember all those shortcuts, just use <code>ctrl-shift-alt-T</code> (might want to rebind that to something else!) and get a context-sensitive list of refactorings available for the currently selected object</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_troubleshooting">Troubleshooting</h5>
+<div class="paragraph">
+<p>When a Maven module is imported, IntelliJ generates its own project files (suffix <code>.ipr</code>), and the application is actually built from that.</p>
+</div>
+<div class="paragraph">
+<p>Occasionally these don&#8217;t keep in sync (even if auto-import of Maven modules has been enabled).</p>
+</div>
+<div class="paragraph">
+<p>To fix the issue, try:
+* reimport module
+* rebuild selected modules/entire project
+* remove and then re-add the project
+* restart, invalidating caches
+* hit StackOverflow (!)</p>
+</div>
+<div class="paragraph">
+<p>One thing worth knowing; IntelliJ actively scans the filesystem all the time.  It&#8217;s therefore (almost always) fine to build the app from the Maven command line; IntelliJ will detect the changes and keep in sync.  If you want to force that, use <code>File &gt; Synchronize</code>, <code>ctrl-alt-Y</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_advanced">2.1.5. Advanced</h4>
+<div class="paragraph">
+<p>In this section are a couple of options that will reduce the length of the change code/build/deploy/review feedback loop.</p>
+</div>
+<div class="sect4">
+<h5 id="_setting_up_dynamic_reloading">Setting up Dynamic Reloading</h5>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+TODO - see <a href="http://blog.jetbrains.com/idea/2013/07/get-true-hot-swap-in-java-with-dcevm-and-intellij-idea/">IntelliJ blog</a>.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_setting_up_jrebel">Setting up JRebel</h5>
+<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>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_cg_ide_eclipse">2.2. Developing using Eclipse</h3>
+<div class="paragraph">
+<p>If you are an <a href="http://www.eclipse.org">Eclipse</a> user, then we recommend you download the "Eclipse JEE package" configuration.</p>
+</div>
+<div class="paragraph">
+<p>When running an Apache Isis application, it&#8217;s necessary to setup the development environment so that the Java bytecode can be enhanced by the <a href="http://www.datanucleus.org">DataNucleus</a> enhancer.  If working in Eclipse, then JDO enhancement is most easily done by installing the <a href="http://www.datanucleus.org/products/datanucleus/jdo/guides/eclipse.html">DataNucleus' Eclipse plugin</a>.  This hooks the bytecode enhancement of your domain objects into Eclipse&#8217;s normal incremental compilation.</p>
+</div>
+<div class="paragraph">
+<p>This plugin needs to be configured for each of your domain modules (usually just one in any given app).  The steps are therefore:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>import the project into Eclipse</p>
+</li>
+<li>
+<p>configure the DataNucleus enhancer</p>
+</li>
+<li>
+<p>run the app from the <code>.launch</code> file</p>
+</li>
+</ul>
+</div>
+<div class="sect3">
+<h4 id="_screencast">2.2.1. Screencast</h4>
+<div class="paragraph">
+<p>The following screencast shows how to import an Apache Isis maven-based application into Eclipse and configure to use with the JDO Objectstore</p>
+</div>
+<div class="videoblock">
+<div class="content">
+<iframe width="640px" height="480px" src="//www.youtube.com/embed/RgcYfjQ8yJA?rel=0" frameborder="0" allowfullscreen></iframe>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_importing_the_project">2.2.2. Importing the Project</h4>
+<div class="paragraph">
+<p>Use File &gt; Import, then Maven &gt; Existing Maven Projects.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_add_datanucleus_support">2.2.3. Add DataNucleus support</h4>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Make sure you are in the 'Java' Perspective, not the 'Java EE' Perspective.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>In Eclipse, for the <em>domain object model</em> project, first add DataNucleus support:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/appendices/dev-env/eclipse/eclipse-100-project-support.png"><img src="images/appendices/dev-env/eclipse/eclipse-100-project-support.png" alt="eclipse 100 project support" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>Then turn on Auto-Enhancement:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/appendices/dev-env/eclipse/eclipse-110-project-support.png"><img src="images/appendices/dev-env/eclipse/eclipse-110-project-support.png" alt="eclipse 110 project support" width="600px"></a>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_update_the_classpath">Update the classpath</h5>
+<div class="paragraph">
+<p>DataNucleus' enhancer uses the domain object model&#8217;s own classpath to reference DataNucleus JARs. So, even though your domain objects are unlikely to depend on DataNucleus, these references must still be present.</p>
+</div>
+<div class="paragraph">
+<p>See the earlier section on <a href="ug.html#_ug_getting-started_datanucleus-enhancer">DataNucleus enhancer</a> for details of the contents of the <code>pom.xml</code>.  Chances are it is already set up from running the <a href="ug.html#_ug_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
+</div>
+<div class="paragraph">
+<p>Then, tell DataNucleus to use the project classpath:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images//appendices/dev-env/eclipse/eclipse-010-windows-preferences.png"><img src="images//appendices/dev-env/eclipse/eclipse-010-windows-preferences.png" alt="eclipse 010 windows preferences" width="750px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>When the enhancer runs, it will print out to the console:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images//appendices/dev-env/eclipse/eclipse-120-console.png"><img src="images//appendices/dev-env/eclipse/eclipse-120-console.png" alt="eclipse 120 console" width="500px"></a>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_workaround_for_path_limits_the_dn_plugin_to_use_the_persistence_xml">Workaround for path limits (the DN plugin to use the persistence.xml)</h5>
+<div class="paragraph">
+<p>If running on Windows then the DataNucleus plugin is very likely to hit the Windows path limit.</p>
+</div>
+<div class="paragraph">
+<p>To fix this, we configure the enhancer to read from the <code>persistence.xml</code> file.</p>
+</div>
+<div class="paragraph">
+<p>As a prerequisite, first make sure that your domain object model has a <code>persistence.xml</code> file.  Then specify the <code>persistence-unit</code> in the project properties:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images//appendices/dev-env/eclipse/eclipse-025-project-properties.png"><img src="images//appendices/dev-env/eclipse/eclipse-025-project-properties.png" alt="eclipse 025 project properties" width="750px"></a>
+</div>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_workaround_if_the_enhancer_fails">Workaround: If the enhancer fails</h5>
+<div class="paragraph">
+<p>On occasion it appears that Eclipse can attempt to run two instances of the DataNucleus enhancer. This is probably due to multiple Eclipse builders being defined; we&#8217;ve noticed multiple entries in the Eclipse&#8217;s <code>Debug</code> view:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images//appendices/dev-env/eclipse/eclipse-210-enhancer-fails-duplicates.png"><img src="images//appendices/dev-env/eclipse/eclipse-210-enhancer-fails-duplicates.png" alt="eclipse 210 enhancer fails duplicates" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>At any rate, you&#8217;ll know you&#8217;ve encountered this error if you see the following in the console:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images//appendices/dev-env/eclipse/eclipse-200-enhancer-fails-duplicates.png"><img src="images//appendices/dev-env/eclipse/eclipse-200-enhancer-fails-duplicates.png" alt="eclipse 200 enhancer fails duplicates" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>The best solution is to remove DataNucleus support and then to re-add it:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images//appendices/dev-env/eclipse/eclipse-220-enhancer-fails-duplicates.png"><img src="images//appendices/dev-env/eclipse/eclipse-220-enhancer-fails-duplicates.png" alt="eclipse 220 enhancer fails duplicates" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>If you consistently hit problems, then the final recourse is to disable the automatic enhancement and to remember to manually enhance your domain object model before each run.</p>
+</div>
+<div class="paragraph">
+<p>Not ideal, we know. Please feel free to contribute a better solution :-)</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_running_the_app_2">2.2.4. Running the App</h4>
+<div class="paragraph">
+<p>The simpleapp archetype automatically provides a <code>.launch</code> configurations in the <code>webapp</code> module. You can therefore very simply run the application by right-clicking on one of these files, and choosing "Run As…" or "Debug As…".</p>
+</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 screencast above shows this in action.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_other_domain_projects">2.2.5. Other domain projects.</h4>
+<div class="paragraph">
+<p>There is nothing to prevent you having multiple domain projects. You might want to do such that each domain project corresponds to a <a href="http://www.methodsandtools.com/archive/archive.php?id=97p2">DDD module</a>, thus guaranteeing that there are no cyclic dependencies between your modules.</p>
+</div>
+<div class="paragraph">
+<p>If you do this, make sure that each project has its own <code>persistence.xml</code> file.</p>
+</div>
+<div class="paragraph">
+<p>And, remember also to configure Eclipse&#8217;s DataNucleus plugin for these other domain projects.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cg_ide-templates">3. IDE Templates</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>We provide IDE templates (for IntelliJ and Eclipse) for writing Apache Isis domain objects, and also for unit tests (JUnit and JMock).</p>
+</div>
+<div class="sect2">
+<h3 id="_download">3.1. Download</h3>
+<div class="paragraph">
+<p>The following table lists the templates to download</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 25%;">
+<col style="width: 25%;">
+<col style="width: 25%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Template</th>
+<th class="tableblock halign-left valign-top">Prefix</th>
+<th class="tableblock halign-left valign-top">IntelliJ</th>
+<th class="tableblock halign-left valign-top">Eclipse</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>Apache Isis Domain Objects</p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>is</p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><a href="./resources/templates/isis-templates-idea.xml">Download</a></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><a href="./resources/templates/isis-templates.xml">Download</a></p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>JUnit tests</p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>ju</p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><a href="./resources/templates/junit4-templates-idea.xml">Download</a></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><a href="./resources/templates/junit4-templates.xml">Download</a></p>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>JMock tests</p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p>jm</p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><a href="./resources/templates/jmock2-templates-idea.xml">Download</a></p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><a href="./resources/templates/jmock2-templates.xml">Download</a></p>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The most commonly used Apache Isis domain objects templates are also listed on the <a href="./cheat-sheet.html">Apache Isis cheat sheet</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_installation">3.2. Installation</h3>
+<div class="sect3">
+<h4 id="_intellij">3.2.1. IntelliJ</h4>
+<div class="paragraph">
+<p>To install in IntelliJ, copy to the relevant <code>config/templates</code> directory, eg:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Windows <code>&lt;User home&gt;\.IntelliJIdea14\config\templates</code></p>
+</li>
+<li>
+<p>Linux <code>~/.IntelliJIdea14/config/templates</code></p>
+</li>
+<li>
+<p>Mac OS <code>~/Library/Preferences/IntelliJIdea14/templates</code></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_eclipse">3.2.2. Eclipse</h4>
+<div class="paragraph">
+<p>To install in Eclipse, go to <code>Windows &gt; Preferences &gt; Java &gt; Editor &gt; Templates</code> and choose <code>Import</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_usage">3.3. Usage</h3>
+<div class="paragraph">
+<p>Enter the prefix (<code>is</code>, <code>ju</code>, <code>jm</code>) and the IDE will list all available templates in that category.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cg_cmd-line">4. Command Line and CI</h2>
+<div class="sectionbody">
+<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>
+</div>
+<div class="sect1">
+<h2 id="_cg_isis-maven-plugin">5. Apache Isis Maven Plugin</h2>
+<div class="sectionbody">
+<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>
+</div>
+<div class="sect1">
+<h2 id="_cg_building-isis">6. Building Apache Isis</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_git">6.1. Git</h3>
+<div class="paragraph">
+<p>The Apache Isis source code lives in a git repo.</p>
+</div>
+<div class="sect3">
+<h4 id="_installation_2">6.1.1. Installation</h4>
+<div class="paragraph">
+<p>The easiest place to get hold of command-line git is probably the <a href="http://git-scm.com/downloads">github download page</a>.</p>
+</div>
+<div class="paragraph">
+<p>On Windows, this also installs the rather good mSysGit Unix shell. We recommend that you enable git for both the mSysgit and the Windows command prompt:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/building-isis/setting-up-git.png"><img src="images/building-isis/setting-up-git.png" alt="setting up git" width="350px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>Once git is installed, the two main command line tools to note are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>git</code> command line tool</p>
+</li>
+<li>
+<p><code>gitk</code> for viewing the commit history</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>If using Windows, note that github also have a dedicated <a href="https://help.github.com/articles/set-up-git">Windows client</a>. With a little <a href="http://haacked.com/archive/2012/05/30/using-github-for-windows-with-non-github-repositories.aspx">hacking around</a>, it can also be made to work with non-github repositories.</p>
+</div>
+<div class="paragraph">
+<p>If using Mac, you might also want to check out Atlassian&#8217;s <a href="http://www.atlassian.com/software/sourcetree/overview">Sourcetree</a>.</p>
+</div>
+<div class="sect4">
+<h5 id="_cloning_the_apache_isis_repo">Cloning the Apache Isis repo</h5>
+<div class="paragraph">
+<p>First, clone the Apache Isis repo.</p>
+</div>
+<div class="paragraph">
+<p>If you are a <strong>committer</strong>, then clone from the Apache read/write repo:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git clone https://git-wip-us.apache.org/repos/asf/isis.git</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you are <strong>not a committer</strong>, please see the <a href="#_cg_contributing">contributing</a> page for details on which repo to clone from.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_configuring_git">Configuring Git</h5>
+<div class="paragraph">
+<p>Next up is to configure your user name and password; see also <a href="https://git-wip-us.apache.org/">Apache&#8217;s git</a> docs:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git config user.name &quot;&lt;i&gt;My Name Here&lt;/i&gt;&quot;
+git config user.email &lt;i&gt;myusername@apache.org&lt;/i&gt;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Next, configure the <code>core.autocrlf</code> so that line endings are normalized to LF (Unix style) in the rep; again see <a href="https://git-wip-us.apache.org/">Apache&#8217;s git</a> page:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>on Windows, use:<br></p>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git config core.autocrlf true</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>on Mac/Linux, use:<br></p>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git config core.autocrlf input</code></pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The Windows setting means that files are converted back to CRLF on checkout; the Mac/Linux setting means that the file is left as LF on checkout.</p>
+</div>
+<div class="paragraph">
+<p>We also recommend setting <code>core.safecrlf</code>, which aims to ensure that any line ending conversion is repeatable. Do this on all platforms:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git config core.safecrlf true</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Note that these settings are supplemented in the repo by the <code>.gitattributes</code> file and that explicitly specifies line handling treatment for most of the common file types that we have.</p>
+</div>
+<div class="paragraph">
+<p>Next, we recommend you setup this a refspec so that you can distinguish remote tags from local ones. To do that, locate the <code>[remote &quot;origin&quot;]</code> section in your <code>.git/config</code> and add the third entry shown below:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">[remote &quot;origin&quot;]
+    url = ... whatever ...
+    fetch = ... whatever ...
+    fetch = +refs/tags/*:refs/tags/origin/*</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This will ensure that a <code>git fetch</code> or <code>git pull</code> places any remote tags under <code>origin/xxx.  For example, the`isis-1.0.0`tag on the origin will appear under`origin/isis-1.0.0</code>.</p>
+</div>
+<div class="paragraph">
+<p>If you don&#8217;t use git outside of Apache, you can add the <code>--global</code> flag so that the above settings apply for all repos managed by git on your PC.</p>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_getting_help">6.1.2. Getting help</h4>
+<div class="paragraph">
+<p>Three commands of git that in particular worth knowing:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>git help <em>command</em></code><br></p>
+<div class="paragraph">
+<p>will open the man page in your web browser</p>
+</div>
+</li>
+<li>
+<p><code>git gui</code><br></p>
+<div class="paragraph">
+<p>will open up a basic GUI client to staging changes and making commits.</p>
+</div>
+</li>
+<li>
+<p><code>gitk --all</code><br></p>
+<div class="paragraph">
+<p>will open the commit history for all branches. In particular, you should be able to see the local <code>master</code>, which branch you are working on (the <code>HEAD</code>), and also the last known position of the <code>master</code> branch from the central repo, called <code>origin/master</code>.</p>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>You might also want to explore using a freely available equivalent such as <a href="https://www.sourcetreeapp.com/">Atlassian SourceTree</a>.</p>
+</div>
+<div class="paragraph">
+<p>For further reading, see:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="http://www.kernel.org/pub/software/scm/git/docs/git-config.html">git config man page</a></p>
+</li>
+<li>
+<p><a href="http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html">.gitattributes man page</a></p>
+</li>
+<li>
+<p><a href="http://git-scm.com/docs/gitattributes">.gitattributes git-scm.com docs</a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_installing_maven">6.2. Installing Maven</h3>
+<div class="paragraph">
+<p>Install Maven 3.0.x, downloadable <a href="http://maven.apache.org/download.html">here</a>.</p>
+</div>
+<div class="paragraph">
+<p>Set <code>MAVEN_OPTS</code> environment variable:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="ini">MAVEN_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=256m</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>Previously we suggested <code>128m</code> for the <code>MaxPermSize</code>, but that would no longer seem to be sufficient.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_building_all_of_apache_isis">6.3. Building all of Apache Isis</h3>
+<div class="paragraph">
+<p>To build the source code from the command line, simply go to the root directory and type:</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>The first time you do this, you&#8217;ll find it takes a while since Maven needs to download all of the Apache Isis prerequisites.</p>
+</div>
+<div class="paragraph">
+<p>Thereafter you can speed up the build by adding the <code>-o</code> (offline flag):</p>
+</div>
+<div class="paragraph">
+<p>For the most part, though, you may want to rely on an IDE such as Eclipse to build the codebase for you. Both Eclipse and Idea (12.0+) support incremental background compilation.</p>
+</div>
+<div class="paragraph">
+<p>When using Eclipse, a Maven profile is configured such that Eclipse compiles to <code>target-ide</code> directory rather than the usual <code>target</code> directory. You can therefore switch between Eclipse and Maven command line without one interfering with the other.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cg_contributing">7. Contributing</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This page explains how you can contribute to Apache Isis. You&#8217;ll probably also want <a href="#_cg_ide">set up your IDE</a> and learn <a href="#_cg_building-isis">how to build Apache Isis</a>.</p>
+</div>
+<div class="paragraph">
+<p>Thanks for considering to help out, your contributions are appreciated!</p>
+</div>
+<div class="sect2">
+<h3 id="_recommended_workflow_github">7.1. Recommended Workflow (github)</h3>
+<div class="paragraph">
+<p>Apache Isis' source code is hosted in an Apache git repo (<a href="https://git-wip-us.apache.org/repos/asf/isis.git">https</a>, <a href="http://git-wip-us.apache.org/repos/asf/isis.git">http</a>), with a clone on github (<a href="https://github.com/apache/isis.git">https</a>, or ssh: <code>git@github.com:apache/isis.git</code>.</p>
+</div>
+<div class="paragraph">
+<p>As you might imagine, only committers are permitted to push changes to the central git repo. As a contributor, we recommend that you fork the <a href="https://github.com/apache/isis.git">apache/isis</a> repo in github, and then use your fork as a way of publishing your patches for the Apache Isis committers to apply.</p>
+</div>
+<div class="paragraph">
+<p>The diagram below illustrates the process:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/contributing/git-workflow.png"><img src="images/contributing/git-workflow.png" alt="git workflow" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>That is:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>as a one-time activity, you fork the <a href="https://github.com/apache/isis.git">github.com/apache/isis</a> repo into your own fork on github.com</p>
+</li>
+<li>
+<p>as a one-time activity, you clone your fork to your local computer</p>
+</li>
+<li>
+<p>you set the <a href="https://github.com/apache/isis.git">github.com/apache/isis</a> as your upstream branch; this will allow you to keep your local clone up-to-date with new commits</p>
+<div class="ulist">
+<ul>
+<li>
+<p>note the asymmetry here: the <code>upstream</code> repo (the Apache github repo) is <strong>not</strong> the same as the <code>origin</code> repo (your fork).</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>you work on your changes locally; when done, you push them to your github fork</p>
+</li>
+<li>
+<p>to contribute back a change, raise a <a href="https://issues.apache.org/jira/browse/ISIS">JIRA</a> ticket, and ensure your commit message is in the form: <code>ISIS-nnnn: &#8230;&#8203;</code> so that changes can be tracked (more discussion on this point below). In any case, before you decide to start hacking with Apache Isis, it&#8217;s always worth creating a ticket in JIRA and then have a discussion about it on the <a href="http://isis.apache.org/support.html">mailing lists</a>.</p>
+</li>
+<li>
+<p>Use github to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a> for your feature</p>
+</li>
+<li>
+<p>An Apache Isis committer will review your change, and apply it if suitable.</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_alternative_workflow_jira_patches">7.2. Alternative Workflow (JIRA patches)</h3>
+<div class="paragraph">
+<p>As an alternative, you may decide to clone directly from <a href="https://github.com/apache/isis.git">github.com/apache/isis</a> rather than create your own fork:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/contributing/git-workflow-2.png"><img src="images/contributing/git-workflow-2.png" alt="git workflow 2" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>In this case your <code>upstream</code> repo is the same as your <code>origin</code> repo, which might seem more straightforward. On the other hand, if you go this route then you&#8217;ll need create patches locally and attach them to the JIRA ticket.</p>
+</div>
+<div class="paragraph">
+<p>For the Apache Isis committers it really doesn&#8217;t matter which route you take, so go with whatever&#8217;s most comfortable.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_setting_up_your_fork_clone">7.3. Setting up your fork/clone</h3>
+<div class="paragraph">
+<p>If you choose to create your own fork then you&#8217;ll need an account on <a href="https://github.com">github.com</a>. You then fork simply by pressing the "Fork" button:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/contributing/github-forking.png"><img src="images/contributing/github-forking.png" alt="github forking" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>An account isn&#8217;t needed if you just clone straight from the <a href="http://github.com/apache/isis">github.com/apache/isis</a>.</p>
+</div>
+<div class="paragraph">
+<p>Whether you&#8217;ve forked or not, you then need to clone the repo onto your computer. Github makes this very easy to do:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>for Windows users, we suggest you use github&#8217;s 'Clone in Windows' feature</p>
+</li>
+<li>
+<p>for Mac/Linux users, create a clone from the command line:</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Again, the info is easily found in the github page:</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<a class="image" href="images/contributing/github-cloning.png"><img src="images/contributing/github-cloning.png" alt="github cloning" width="600px"></a>
+</div>
+</div>
+<div class="paragraph">
+<p>If you&#8217;ve created your own fork, then you need to add the <code>upstream</code> remote to the <a href="https://github.com/apache/isis">github.com/apache/isis</a>. This remote is traditionally called <code>upstream</code>. You should then arrange for your <code>master</code> branch to track the <code>upstream/master</code> remote branch:</p>
+</div>
+<div class="paragraph">
+<p>If you didn&#8217;t create your own fork, you can omit the above step. Either way around, you can now fetch new commits using simply:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git fetch</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>For more info on tracking branches <a href="http://git-scm.com/book/en/Git-Branching-Remote-Branches">here</a> and <a href="http://gitready.com/beginner/2009/03/09/remote-tracking-branches.html">here</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_commit_messages">7.4. Commit messages</h3>
+<div class="paragraph">
+<p>Although with git your commits are always performed on your local repo, those commit messages become public when the patch is applied by an Apache Isis committer. You should take time to write a meaningful commit message that helps explain what the patch refers to; if you don&#8217;t then there&#8217;s a chance that your patch may be rejected and not applied. No-one likes hard work to go to waste!</p>
+</div>
+<div class="paragraph">
+<p>We therefore recommend that your commit messages are as follows [1]:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="other">ISIS-999: Make the example in CONTRIBUTING imperative and concrete
+
+Without this patch applied the example commit message in the CONTRIBUTING
+document is not a concrete example.  This is a problem because the
+contributor is left to imagine what the commit message should look like
+based on a description rather than an example.  This patch fixes the
+problem by making the example concrete and imperative.
+
+The first line is a real life imperative statement with a ticket number
+from our issue tracker.  The body describes the behavior without the patch,
+why this is a problem, and how the patch fixes the problem when applied.</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Once your git repo is setup, the next thing you&#8217;ll most likely want to do is to setup your development environment. See <a href="development-environment.html">here</a> for more details.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_creating_the_patch_file">7.5. Creating the patch file</h3>
+<div class="paragraph">
+<p>If you are working without a github fork of Apache Isis, then you can create the patches from your own local git repository.</p>
+</div>
+<div class="paragraph">
+<p>As per <a href="http://stackoverflow.com/questions/6658313/generate-a-git-patch-for-a-specific-commit">this stackoverflow question</a>, create the patch using <code>git format-patch</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git format-patch -10 HEAD --stdout &gt; 0001-last-10-commits.patch</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Here <code>-10</code> is the last 10 commits you have done. You need to change that integer according to the commits you need to apply into the patch.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_sample_contribution_workflow">7.6. Sample Contribution Workflow</h3>
+<div class="paragraph">
+<p>Assuming you&#8217;re development environment is all setup, let&#8217;s walk through how you might make contribute a patch. In this example, suppose that you&#8217;ve decided to work on JIRA ticket #123, an enhancement to support Blob/Clob datatypes.</p>
+</div>
+<div class="sect3">
+<h4 id="_update_your_master_branch">7.6.1. Update your master branch</h4>
+<div class="paragraph">
+<p>The first thing to do is to make sure your local clone is up-to-date. We do this by retrieving new commits from upstream repo and then merging them as a fast-forward into your local branch.</p>
+</div>
+<div class="paragraph">
+<p>Irrespective of whether you are using a github fork, the upstream for your local <code>master</code> branch will be tracking the appropriate remote&#8217;s <code>master</code> branch. So n either case, the same commands work:</p>
+</div>
+<div class="paragraph">
+<p>Alternatively, you can combine the <code>git fetch</code> and <code>git merge</code> and just use <code>git pull</code>:
+&lt;pre&gt;
+git checkout master
+git pull –ff-only
+&lt;/pre&gt;</p>
+</div>
+<div class="paragraph">
+<p>If the <code>merge</code> or <code>pull</code> fails, it means that you must have made commits and there have been changes meanwhile on the remote <code>master&#8217;s branch. You can use `gitk --all</code> to confirm. If this fails, see our <a href="git-cookbook.html">git cookbook</a> page for a procedure to retrospectively sort out this situation.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_create_a_topic_branch">7.6.2. Create a topic branch</h4>
+<div class="paragraph">
+<p>We recommend you name topic branches by the JIRA ticket, ie &lt;tt&gt;ISIS-nnn-description&lt;/tt&gt;. So let&#8217;s create a new branch based off <code>master</code> and call it "ISIS-123-blobs"</p>
+</div>
+<div class="paragraph">
+<p>You can confirm the branch is there and is your new <code>HEAD</code> using either <code>gitk --all</code>. Alternatively, use the command line:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">$ git checkout -b ISIS-123-blobs</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The command line prompt should also indicate you are on a branch, isolated from any changes that might happen on the <code>master</code> branch.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_make_file_changes_and_commit">7.6.3. Make File Changes and Commit</h4>
+<div class="paragraph">
+<p>Next, make changes to your files using the usual commands (see also our <a href="#_cg_git-cookbook">git cookbook</a> section):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>git add</code></p>
+</li>
+<li>
+<p><code>git mv</code></p>
+</li>
+<li>
+<p><code>git rm</code></p>
+</li>
+<li>
+<p><code>git commit</code></p>
+</li>
+<li>
+<p><code>git status</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>and so on.</p>
+</div>
+<div class="paragraph">
+<p>Continue this way until happy with the change. Remember to run all your tests on the topic branch (including a full <code>mvn clean install</code>).</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_rebasing_with_code_master_code">7.6.4. Rebasing with <code>master</code></h4>
+<div class="paragraph">
+<p>Before you can share your change, you should rebase (in other words replay) your changes on top of the <code>master</code> branch.</p>
+</div>
+<div class="paragraph">
+<p>The first thing to do is to pull down any changes made in upstream remote&#8217;s <code>master</code> since you started your topic branch:</p>
+</div>
+<div class="paragraph">
+<p>These are the same commands that you would have run before you created your topic branch. If you use <code>gitk --all</code>, there&#8217;s a good chance that new commits have come in.</p>
+</div>
+<div class="paragraph">
+<p>Next, we reintegrate our topic branch by rebasing onto <code>master</code>:
+&lt;pre&gt;
+git checkout ISIS-123-blobs
+git rebase master
+&lt;/pre&gt;</p>
+</div>
+<div class="paragraph">
+<p>This takes all of the commits in your branch, and applies them on top of the new <code>master</code> branch. When your change is eventually integrated back in, it will result in a nice clear linear history on the public repo.</p>
+</div>
+<div class="paragraph">
+<p>If the rebase fails because of a conflict, then you&#8217;ll be dumped into REBASE mode. Edit the file that has the conflict, and make the appropriate edits. Once done:</p>
+</div>
+<div class="paragraph">
+<p>Once the rebase has completed, re-run your tests to confirm that everything is still good.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_raising_a_pull_request">7.6.5. Raising a pull request</h4>
+<div class="paragraph">
+<p>If you have your own fork, you can now simply push the changes you&#8217;ve made locally to your fork:</p>
+</div>
+<div class="paragraph">
+<p>This will create a corresponding branch in the remote github repo. If you use <code>gitk --all</code>, you&#8217;ll also see a <code>remotes/origin/ISIS-123-blobs</code> branch.</p>
+</div>
+<div class="paragraph">
+<p>Then, use github to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a>. Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail to the <a href="../support.html">dev mailing list</a>. You&#8217;ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn&#8217;t mandatory).</p>
+</div>
+<div class="paragraph">
+<p>The process to raise the pull request, broadly speaking:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Open a web browser to your github fork of isis</p>
+</li>
+<li>
+<p>Select your topic branch (pushed in the previous step) so that the pull request references the topic branch.</p>
+</li>
+<li>
+<p>Click the <code>Pull Request</code> button.</p>
+</li>
+<li>
+<p>Check that the Apache Isis mailing list email came through.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_if_your_pull_request_is_accepted">7.7. If your pull request is accepted</h3>
+<div class="paragraph">
+<p>To double check that your pull request is accepted, update your <code>master</code> branch from the <code>upstream</code> remote:</p>
+</div>
+<div class="paragraph">
+<p>You can then use <code>gitk --all</code> (or <code>git log</code> if you prefer the command line) to check your contribution has been added.</p>
+</div>
+<div class="paragraph">
+<p>You can now delete your topic branch and remove the branch in your github:</p>
+</div>
+<div class="paragraph">
+<p>Finally, you might want to push the latest changes in master back up to your github fork. If so, use:</p>
+</div>
+<div class="sect3">
+<h4 id="_if_your_pull_request_is_rejected">7.7.1. If your pull request is rejected</h4>
+<div class="paragraph">
+<p>If your pull request is rejected, then you&#8217;ll need to update your branch from the main repository and then address the rejection reason.</p>
+</div>
+<div class="paragraph">
+<p>You&#8217;ll probably also want to remove the remote branch on github:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete ISIS-123-blobs</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>… and continue as before until you are ready to resubmit your change.</p>
+</div>
+<div class="paragraph">
+<p>[1] inspiration for the recommended commit format comes from the <a href="https://github.com/puppetlabs/puppet">puppet</a> project&#8217;s <a href="https://github.com/puppetlabs/puppet/blob/master/CONTRIBUTING.md">contributing</a> page.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cg_policies">8. Policies</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This chapter pulls together various policy documents relating to the development of Apache Isis'.</p>
+</div>
+<div class="sect2">
+<h3 id="_cg_committers_versioning-policy">8.1. Versioning Policy</h3>
+<div class="sect3">
+<h4 id="_semantic_versioning">8.1.1. Semantic Versioning</h4>
+<div class="paragraph">
+<p>Starting from v1.0.0, Apache Isis has adopted <a href="http://semver.org">semantic versioning</a> for its versioning policy.</p>
+</div>
+<div class="paragraph">
+<p>Version numbers are in the form <code>x.y.z</code>:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>x is bumped up whenever there a breaking API change</p>
+</li>
+<li>
+<p>y is bumped up whenever there is a new feature that does not break API</p>
+</li>
+<li>
+<p>z is bumped up for minor bug fixes.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>This scheme would be adopted for both core and components.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_version_ranges">8.1.2. Version ranges</h4>
+<div class="paragraph">
+<p>Version ranges may not be used.  If necessary, end-users can use <code>&lt;dependencyManagement</code> elements to have combine components built against different versions of core.</p>
+</div>
+<div class="paragraph">
+<p>That said, this can introduce instability and so generally we recommend that end-users configure the <code>maven-enforcer-plugin</code> and its <a href="http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html">DependencyConvergence</a> rule.  This will help avoid "jar hell" (components having conflicting dependencies of core).</p>
+</div>
+<div class="paragraph">
+<p>If there is a conflict, we would ask that end-users engage with Apache Isis committers to have an updated version of the component(s) pushed out.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_cg_policies_git-policy">8.2. Git Policy</h3>
+<div class="paragraph">
+<p>These notes recommend how contributors should work with git. To understand these notes, the only real concepts that you need to grok are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>git commits form an acyclic graph, with each commit pointing to its parent commit (or commit<strong>s</strong>, if a merge)</p>
+</li>
+<li>
+<p>a branch is merely a pointer to one of these commits; git calls the main branch <code>master</code></p>
+</li>
+<li>
+<p>git commits happen in two steps: first they are added to the index (also called the staging area), then they are committed.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>For more background reading, see:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="http://git-scm.com/book">Pro Git</a> book (free in electronic form)</p>
+</li>
+<li>
+<p><a href="https://github.s3.amazonaws.com/media/book.pdf">Git community book</a></p>
+</li>
+<li>
+<p><a href="http://git-scm.com/2011/07/11/reset.html">git reset demystified</a> - differentiating the working directory vs index/staging area</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>And, of course, there is lo

<TRUNCATED>

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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/simpleapp-archetype.html
----------------------------------------------------------------------
diff --git a/content/simpleapp-archetype.html b/content/simpleapp-archetype.html
deleted file mode 100644
index 040f51d..0000000
--- a/content/simpleapp-archetype.html
+++ /dev/null
@@ -1,1036 +0,0 @@
-<!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><br/><br/></p>
-</div>
-<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">User 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="dg.adoc">Developers' 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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/snapshot-process.html
----------------------------------------------------------------------
diff --git a/content/snapshot-process.html b/content/snapshot-process.html
deleted file mode 100644
index 6d136ab..0000000
--- a/content/snapshot-process.html
+++ /dev/null
@@ -1,892 +0,0 @@
-<!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>Snapshot Release Process</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>Apache Isis consists of a number of separately releasable modules; see the main <a href="release-process.html">release process</a> documentation for full details. All the non-core components depend on the <code>core</code>, and use the <code>core&#8217;s parent `pom.xml</code> as their parent pom.</p>
-</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>Unless otherwise stated, you should assume that the steps described here are performed in the base directory of the module being released.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_prerequisites">Prerequisites</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before you start, make sure you&#8217;ve defined the snapshots repo in your local <code>~/.m2/settings.xml</code> file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;settings&gt;</span>
-  <span class="tag">&lt;servers&gt;</span>
-    <span class="comment">&lt;!-- To publish a snapshot of some part of Maven --&gt;</span>
-    <span class="tag">&lt;server&gt;</span>
-      <span class="tag">&lt;id&gt;</span>apache.snapshots.https<span class="tag">&lt;/id&gt;</span>
-      <span class="tag">&lt;username&gt;</span>xxxxxxx<span class="tag">&lt;/username&gt;</span>
-      <span class="tag">&lt;password&gt;</span>yyyyyyy<span class="tag">&lt;/password&gt;</span>
-    <span class="tag">&lt;/server&gt;</span>
-    ...
-  <span class="tag">&lt;/servers&gt;</span>
-  ...
-<span class="tag">&lt;/settings&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>xxxxxxx</code> and <code>yyyyyyy</code> are your Apache LDAP username and password. For more information, see these <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">ASF docs</a>.</p>
-</div>
-<div class="paragraph">
-<p>{note
-It is also possible to configure to use <code>.ssh</code> secure keys, and thereby avoid hardcoding your Apache LDAP password into your <code>.m2/settings.xml</code> file. A description of how to do this can be found, for example, <a href="http://bval.apache.org/release-setup.html">here</a>.
-}</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_sanity_check">Sanity Check</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before deploying the snapshot, perform a quick sanity check.</p>
-</div>
-<div class="paragraph">
-<p>First, delete all Isis artifacts from your local Maven repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, check that the releasable module builds independently. The build process depends on whether the artifact is of Apache Isis core or of one of its components:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>For Apache Isis core, build using the <code>-o</code> offline flag:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn clean install -o</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Confirm that the versions of the Isis artifacts now cached in your local repository are correct.</p>
-</div>
-</li>
-<li>
-<p>For an Apache Isis component, build without the offline flag; Maven should pull down the component&#8217;s dependencies from the Maven central repo:<br></p>
-<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>Confirm that the versions of the Isis artifacts now cached in your local repository are correct (both those pulled down from Maven central repo, as well as those of the component built locally).</p>
-</div>
-</li>
-</ul>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_deploy_all_modules">Deploy All Modules</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Deploy all modules using:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bsah">mvn -D deploy=snapshot deploy</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This will deploy all the modules that make up a release.</p>
-</div>
-<div class="paragraph">
-<p>To confirm that they are present, browse to Apache&#8217;s <a href="https://repository.apache.org">Nexus repository manager</a> and search for "isis".</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="paragraph">
-<p>Depending on the module being released, the deploy process could take a long time. Go grab a bite of lunch.</p>
-</div>
-</td>
-</tr>
-</table>
-</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="#_prerequisites">Prerequisites</a></li>
-<li><a href="#_sanity_check">Sanity Check</a></li>
-<li><a href="#_deploy_all_modules">Deploy All Modules</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" === "Snapshot Release Process") {
-        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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/dg.html
----------------------------------------------------------------------
diff --git a/content/guides/dg.html b/content/guides/dg.html
deleted file mode 100644
index 55d87be..0000000
--- a/content/guides/dg.html
+++ /dev/null
@@ -1,1752 +0,0 @@
-<!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>Development Environment Guide</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 class="sect1">
-<h2 id="_developers_guide">Developers' Guide</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>This developers' guide describes how to set up your development environment to develop your Apache Isis applications either within the <a href="#_dg_intellij">IntelliJ</a> IDE, or within the <a href="#_dg_eclipse">Eclipse</a> IDE, or from the <a href="#_dg_cmd-line">command line</a>.</p>
-</div>
-<div class="paragraph">
-<p>The developer' guide is <em>not</em> intended as a reference manual; for that see the <a href="rg.html#">Reference Guide</a>.  This guide also does <em>not</em> describe how to actually build an Apache Isis application; for that see the <a href="ug.html#">Users' Guide</a>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_dg_intellij">Setting up IntelliJ IDEA</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>This appendix describes how to install and setup IntelliJ, then how to import an application into IntelliJ and run it.</p>
-</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>This document relates to IntelliJ Community Edition 14.1.1, with screenshots taken for Windows.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_installing_and_setting_up">Installing and Setting up</h3>
-<div class="paragraph">
-<p>This section covers installation and setup.</p>
-</div>
-<div class="sect3">
-<h4 id="_download_and_install">Download and Install</h4>
-<div class="paragraph">
-<p><a href="https://www.jetbrains.com/idea/download/">Download</a> latest version of IntelliJ Community Edition, and install:</p>
-</div>
-<div class="paragraph">
-<p>Start the wizard, click through the welcome page:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/010-installing/010-welcome-page.png" alt="010 welcome page" width="400px">
-</div>
-<div class="title">Figure 1. IntelliJ Installation Wizard - Welcome page</div>
-</div>
-<div class="paragraph">
-<p>Choose the location to install the IDE:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/010-installing/020-choose-location.png" alt="020 choose location" width="400px">
-</div>
-<div class="title">Figure 2. IntelliJ Installation Wizard - Choose Location</div>
-</div>
-<div class="paragraph">
-<p>Adjust any installation options as you prefer:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/010-installing/030-installation-options.png" alt="030 installation options" width="400px">
-</div>
-<div class="title">Figure 3. IntelliJ Installation Wizard - Installation Options</div>
-</div>
-<div class="paragraph">
-<p>and the start menu:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/010-installing/040-start-menu-folder.png" alt="040 start menu folder" width="400px">
-</div>
-<div class="title">Figure 4. IntelliJ Installation Wizard - Start Menu Folder</div>
-</div>
-<div class="paragraph">
-<p>and finish up the wizard:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/010-installing/050-completing.png" alt="050 completing" width="400px">
-</div>
-<div class="title">Figure 5. IntelliJ Installation Wizard - Completing the Wizard</div>
-</div>
-<div class="paragraph">
-<p>Later on we&#8217;ll specify the Apache Isis/ASF code style settings, so for now select <code>I do not want to import settings</code>:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/010-installing/060-import-settings-or-not.png" alt="060 import settings or not" width="400px">
-</div>
-<div class="title">Figure 6. IntelliJ Installation Wizard - Import Settings</div>
-</div>
-<div class="paragraph">
-<p>Finally, if you are young and trendy, set the UI theme to Darcula:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/010-installing/070-set-ui-theme.png" alt="070 set ui theme" width="600px">
-</div>
-<div class="title">Figure 7. IntelliJ Installation Wizard Set UI Theme</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_new_project">New Project</h4>
-<div class="paragraph">
-<p>In IntelliJ a project can contain multiple modules; these need not be physically located together.  (If you are previously an Eclipse user, you can think of it as similar to an Eclipse workspace).</p>
-</div>
-<div class="paragraph">
-<p>Start off by creating a new project:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/010-new-project-create.png" alt="010 new project create" width="400px">
-</div>
-<div class="title">Figure 8. IntelliJ Create New Project</div>
-</div>
-<div class="paragraph">
-<p>We want to create a new <strong>Java</strong> project:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/020-java-project-setup-jdk.png" alt="020 java project setup jdk" width="600px">
-</div>
-<div class="title">Figure 9. IntelliJ Create New Project - Create a Java project</div>
-</div>
-<div class="paragraph">
-<p>We therefore need to specify the JDK.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-at the time of writing Apache Isis supports only Java 7; Java 8 is scheduled for support in Apache Isis v1.9.0
-</td>
-</tr>
-</table>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/030-java-project-select-jdk.png" alt="030 java project select jdk" width="300px">
-</div>
-<div class="title">Figure 10. IntelliJ Create New Java Project - Select the JDK</div>
-</div>
-<div class="paragraph">
-<p>Specify the directory containing the JDK:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/050-name-and-location.png" alt="050 name and location" width="400px">
-</div>
-<div class="title">Figure 11. IntelliJ Create New Project - Select the JDK location</div>
-</div>
-<div class="paragraph">
-<p>Finally allow IntelliJ to create the directory for the new project:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/020-create-new-project/060-create-dir.png" alt="060 create dir" width="200px">
-</div>
-<div class="title">Figure 12. IntelliJ Create New Project</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_import_settings">Import Settings</h4>
-<div class="paragraph">
-<p>Next we need to configure IntelliJ with ASF/Apache Isis' standard templates and coding conventions.  These are bundled as the <code>settings.jar</code> JAR file <a href="resources/appendices/dev-env/intellij/isis-settings.jar">download from the Apache Isis website</a>).</p>
-</div>
-<div class="paragraph">
-<p>Import using: <code>File &gt; Import Settings</code>, and specify the directory that you have downloaded the file to:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/030-import-settings/010-settings-import-jar.png" alt="010 settings import jar" width="400px">
-</div>
-<div class="title">Figure 13. IntelliJ Import Settings - Specify JAR file</div>
-</div>
-<div class="paragraph">
-<p>Select all the (two) categories of settings available in the JAR file:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/030-import-settings/020-select-all.png" alt="020 select all" width="300px">
-</div>
-<div class="title">Figure 14. IntelliJ Import Settings - Select all categories</div>
-</div>
-<div class="paragraph">
-<p>And then restart:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/030-import-settings/030-restart.png" alt="030 restart" width="200px">
-</div>
-<div class="title">Figure 15. IntelliJ Import Settings - Restart</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_other_settings">Other Settings</h4>
-<div class="paragraph">
-<p>There are also some other miscellaneous settings that we recommend that you adjust (though these are not critical).</p>
-</div>
-<div class="paragraph">
-<p>First, specify an up-to-date Maven installation, using <code>File &gt; Settings</code> (or <code>IntelliJ &gt; Preferences</code> if on MacOS):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/040-other-settings/010-maven-installation.png" alt="010 maven installation" width="600px">
-</div>
-<div class="title">Figure 16. IntelliJ Other Settings - Maven Installation</div>
-</div>
-<div class="paragraph">
-<p>Still on the Maven settings page, configure as follows:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/040-other-settings/020-maven-configuration.png" alt="020 maven configuration" width="600px">
-</div>
-<div class="title">Figure 17. IntelliJ Other Settings - Maven Configuration</div>
-</div>
-<div class="paragraph">
-<p>On the compiler settings page, ensure that <code>build automatically</code> is enabled (and optionally <code>compile independent modules in parallel</code>):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/040-other-settings/030-build-automatically.png" alt="030 build automatically" width="600px">
-</div>
-<div class="title">Figure 18. IntelliJ Other Settings - Compiler Settings</div>
-</div>
-<div class="paragraph">
-<p>On the auto import page, check the <code>optimize imports on the fly</code> and <code>add unambiguous imports on the fly</code></p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/040-other-settings/040-auto-import.png" alt="040 auto import" width="600px">
-</div>
-<div class="title">Figure 19. IntelliJ Other Settings - Auto Import</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_plugins">Plugins</h4>
-<div class="paragraph">
-<p>You might also want to set up some additional plugins, using <code>File &gt; Settings &gt; Plugins</code> (or equivalently <code>File &gt; Other Settings &gt; Configure Plugins</code>).</p>
-</div>
-<div class="paragraph">
-<p>Recommended are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="https://plugins.jetbrains.com/plugin/7179?pr=idea">Maven Helper</a> plugin</p>
-<div class="paragraph">
-<p>More on this below.</p>
-</div>
-</li>
-<li>
-<p><a href="https://github.com/asciidoctor/asciidoctor-intellij-plugin">AsciiDoctor</a> plugin</p>
-<div class="paragraph">
-<p>Useful if you are doing any authoring of documents.</p>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Some others you might like to explore are:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/050-some-plugins/020-some-plugins-confirmation.png" alt="020 some plugins confirmation" width="600px">
-</div>
-<div class="title">Figure 20. IntelliJ Plugins</div>
-</div>
-<div class="sect4">
-<h5 id="_maven_helper_plugin">Maven Helper Plugin</h5>
-<div class="paragraph">
-<p>This plugin provides a couple of great features.  One is better visualization of dependency trees (similar to Eclipse).</p>
-</div>
-<div class="paragraph">
-<p>If you open a <code>pom.xml</code> file, you&#8217;ll see an additional "Dependencies" tab:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/010-dependency-tab.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/010-dependency-tab.png" alt="010 dependency tab" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Clicking on this gives a graphical tree representation of the dependencies, similar to that obtained by <code>mvn dependency:tree</code>, but filterable.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/020-dependency-as-tree.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/020-dependency-as-tree.png" alt="020 dependency as tree" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>The plugin also provides the ability to easily run a Maven goal on a project:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/030-maven-run-goal.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/030-maven-run-goal.png" alt="030 maven run goal" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>This menu can also be bound to a keystroke so that it is available as a pop-up:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/040-maven-quick-run.png"><img src="images/appendices/dev-env/intellij-idea/050-some-plugins/maven-helper/040-maven-quick-run.png" alt="040 maven quick run" width="600px"></a>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_importing_and_managing_maven_modules">Importing and Managing Maven Modules</h3>
-<div class="paragraph">
-<p>Let&#8217;s load in some actual code!  We do this by importing the Maven modules.</p>
-</div>
-<div class="paragraph">
-<p>First up, open up the Maven tool window (<code>View &gt; Tool Windows &gt; Maven Projects</code>).  You can then use the 'plus' button to add Maven modules.  In the screenshot you can see we&#8217;ve loaded in Apache Isis core; the modules are listed in the <em>Maven Projects</em> window and corresponding (IntelliJ) modules are shown in the <em>Projects</em> window:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/010-maven-modules-view.png" alt="010 maven modules view" width="730px">
-</div>
-<div class="title">Figure 21. IntelliJ Maven Module Management - Importing Maven modules</div>
-</div>
-<div class="paragraph">
-<p>We can then import another module (from some other directory).  For example, here we are importing the Isis Addons' todoapp example:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/020-adding-another-module.png" alt="020 adding another module" width="400px">
-</div>
-<div class="title">Figure 22. IntelliJ Maven Module Management - Importing another Module</div>
-</div>
-<div class="paragraph">
-<p>You should then see the new Maven module loaded in the <em>Projects</em> window and also the <em>Maven Projects</em> window:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/030-other-module-added.png" alt="030 other module added" width="730px">
-</div>
-<div class="title">Figure 23. IntelliJ Maven Module Management -</div>
-</div>
-<div class="paragraph">
-<p>If any dependencies are already loaded in the project, then IntelliJ will automatically update the CLASSPATH to resolve to locally held modules (rather from <code>.m2/repository</code> folder).  So, for example (assuming that the <code>&lt;version&gt;</code> is correct, of course), the Isis todoapp will have local dependencies on the Apache Isis core.</p>
-</div>
-<div class="paragraph">
-<p>You can press F4 (or use <code>File &gt; Project Structure</code>) to see the resolved classpath for any of the modules loaded into the project.</p>
-</div>
-<div class="paragraph">
-<p>If you want to focus on one set of code (eg the Isis todoapp but not Apache Isis core) then you <em>could</em> remove the module; but better is to ignore those modules.  This will remove from the the <em>Projects</em> window but keep them available in the <em>Maven Projects</em> window for when you next want to work on them:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/040-ignoring-modules.png" alt="040 ignoring modules" width="730px">
-</div>
-<div class="title">Figure 24. IntelliJ Maven Module Management - Ignoring Modules</div>
-</div>
-<div class="paragraph">
-<p>Confirm that it&#8217;s ok to ignore these modules:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/050-ignoring-modules-2.png" alt="050 ignoring modules 2" width="300px">
-</div>
-<div class="title">Figure 25. IntelliJ Maven Module Management - Ignoring Modules (ctd)</div>
-</div>
-<div class="paragraph">
-<p>All being well you should see that the <em>Projects</em> window now only contains the code you are working on.  Its classpath dependencies will be adjusted (eg to resolve to Apache Isis core from <code>.m2/repository</code>):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/100-maven-module-mgmt/060-ignored-modules.png" alt="060 ignored modules" width="730px">
-</div>
-<div class="title">Figure 26. IntelliJ Maven Module Management - Updated Projects Window</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_running">Running</h3>
-<div class="paragraph">
-<p>Let&#8217;s see how to run both the app and the tests.</p>
-</div>
-<div class="sect3">
-<h4 id="_running_the_app">Running the App</h4>
-<div class="paragraph">
-<p>Once you&#8217;ve imported your Isis application, we should run it.  We do this by creating a Run configuration, using <code>Run &gt; Edit Configurations</code>.</p>
-</div>
-<div class="paragraph">
-<p>Set up the details as follows:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/010-run-configuration.png" alt="010 run configuration" width="600px">
-</div>
-<div class="title">Figure 27. IntelliJ Running the App - Run Configuration</div>
-</div>
-<div class="paragraph">
-<p>We specify the <code>Main class</code> to be <code>org.apache.isis.WebServer</code>; this is a wrapper around Jetty.  It&#8217;s possible to pass program arguments to this (eg to automatically install fixtures), but for now leave this blank.</p>
-</div>
-<div class="paragraph">
-<p>Also note that <code>Use classpath of module</code> is the webapp module for your app, and that the <code>working directory</code> is <code>$MODULE_DIR$</code>.</p>
-</div>
-<div class="paragraph">
-<p>Next, and most importantly, configure the DataNucleus enhancer to run for your <code>dom</code> goal.  This can be done by defining a Maven goal to run before the app:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/020-datanucleus-enhancer-goal.png" alt="020 datanucleus enhancer goal" width="400px">
-</div>
-<div class="title">Figure 28. IntelliJ Running the App - Datanucleus Enhancer Goal</div>
-</div>
-<div class="paragraph">
-<p>The <code>-o</code> flag in the goal means run off-line; this will run faster.</p>
-</div>
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
-if you forget to set up the enhancer goal, or don&#8217;t run it on the correct (dom) module, then you will get all sorts of errors when you startup.  These usually manifest themselves as class cast exception in DataNucleus.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>You should now be able to run the app using <code>Run &gt; Run Configuration</code>.  The same configuration can also be used to debug the app if you so need.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_running_the_unit_tests">Running the Unit Tests</h4>
-<div class="paragraph">
-<p>The easiest way to run the unit tests is just to right click on the <code>dom</code> module in the <em>Project Window</em>, and choose run unit tests.  Hopefully your tests will pass (!).</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/030-running-unit-tests.png" alt="030 running unit tests" width="600px">
-</div>
-<div class="title">Figure 29. IntelliJ Running the App - Unit Tests Run Configuration</div>
-</div>
-<div class="paragraph">
-<p>As a side-effect, this will create a run configuration, very similar to the one we manually created for the main app:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/040-running-unit-tests-run-configuration.png" alt="040 running unit tests run configuration" width="600px">
-</div>
-<div class="title">Figure 30. IntelliJ Running the App - Unit Tests Run Configuration</div>
-</div>
-<div class="paragraph">
-<p>Thereafter, you should run units by selecting this configuration (if you use the right click approach you&#8217;ll end up with lots of run configurations, all similar).</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_running_the_integration_tests">Running the Integration Tests</h4>
-<div class="paragraph">
-<p>Integration tests can be run in the same way as unit tests, however the <code>dom</code> module must also have been enhanced.</p>
-</div>
-<div class="paragraph">
-<p>One approach is to initially run the tests use the right click on the <code>integtests</code> module; the tests will fail because the code won&#8217;t have been enhanced, but we can then go and update the run configuration to run the datanucleus enhancer goal (same as when running the application):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img src="images/appendices/dev-env/intellij-idea/110-running-the-app/050-running-integration-tests-run-configuration.png" alt="050 running integration tests run configuration" width="600px">
-</div>
-<div class="title">Figure 31. IntelliJ Running the App - Integration Tests Run Configuration</div>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_hints_and_tips">Hints and Tips</h3>
-<div class="sect3">
-<h4 id="_keyboard_shortcuts_cheat_sheets">Keyboard Shortcuts Cheat Sheets</h4>
-<div class="paragraph">
-<p>You can download 1-page PDFs cheat sheets for IntelliJ&#8217;s keyboard shortcuts:
-* for <a href="https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard.pdf">Windows</a>
-* for MacOS:https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf[MacOS]</p>
-</div>
-<div class="paragraph">
-<p>Probably the most important shortcut on them is for <code>Find Action</code>:
-- <code>ctrl-shift-A</code> on Windows
-- <code>cmd-shift-A</code> on MacOS.</p>
-</div>
-<div class="paragraph">
-<p>This will let you search for any action just by typing its name.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_switching_between_tool_windows_and_editors">Switching between Tool Windows and Editors</h4>
-<div class="paragraph">
-<p>The Tool Windows are the views around the editor (to left, bottom and right).  It&#8217;s possible to move these around to your preferred locations.</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Use <code>alt-1</code> through <code>alt-9</code> (or <code>cmd-1</code> through <code>alt-9</code>) to select the tool windows</p>
-<div class="ulist">
-<ul>
-<li>
-<p>Press it twice and the tool window will hide itself; so can use to toggle</p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p>If in the <em>Project Window</em> (say) and hit enter on a file, then it will be shown in the editor, but (conveniently) the focus remains in the tool window.  To switch to the editor, just press <code>Esc</code>.</p>
-<div class="ulist">
-<ul>
-<li>
-<p>If in the <em>Terminal Window</em>, you&#8217;ll need to press <code>Shift-Esc</code>.</p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p>If on the editor and want to locate the file in (say) the <em>Project Window</em>, use <code>alt-F1</code>.</p>
-</li>
-<li>
-<p>To change the size of any tool window, use <code>ctrl-shift-arrow</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Using these shortcuts you can easily toggle between the tool windows and the editor, without using the mouse.  Peachy!</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_navigating_around">Navigating Around</h4>
-<div class="paragraph">
-<p>For all of the following, you don&#8217;t need to type every letter, typing "ab" will actually search for ".<strong>a.*b.</strong>".</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>to open classes or files or methods that you know the name of:</p>
-<div class="ulist">
-<ul>
-<li>
-<p><code>ctrl-N</code> to open class</p>
-</li>
-<li>
-<p><code>ctrl-shift-N</code> to open a file</p>
-</li>
-<li>
-<p>(bit fiddly this) <code>ctrl-shift-alt-N</code> to search for any symbol.</p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p>open up dialog of recent files: <code>ctrl-E</code></p>
-</li>
-<li>
-<p>search for any file: <code>shift-shift</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Navigating around:
-* find callers of a method (the call hierarchy): <code>ctrl-alt-H</code>
-* find subclasses or overrides: <code>ctrl-alt-B</code>
-* find superclasses/interface/declaration: <code>ctrl-B</code></p>
-</div>
-<div class="paragraph">
-<p>Viewing the structure (ie outline) of a class
-* <code>ctrl-F12</code> will pop-up a dialog showing all members
-** hit <code>ctrl-F12</code> again to also see inherited members</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_editing">Editing</h4>
-<div class="ulist">
-<ul>
-<li>
-<p>Extend selection using <code>ctrl-W</code></p>
-<div class="ulist">
-<ul>
-<li>
-<p>and contract it down again using <code>ctrl-shift-W</code></p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p>to duplicate a line, it&#8217;s <code>ctrl-D</code></p>
-<div class="ulist">
-<ul>
-<li>
-<p>if you have some text selected (or even some lines), it&#8217;ll actually duplicate the entire selection</p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p>to delete a line, it&#8217;s <code>ctrl-X</code></p>
-</li>
-<li>
-<p>to move a line up or down: <code>shift-alt-up</code> and <code>shift-alt-down</code></p>
-<div class="ulist">
-<ul>
-<li>
-<p>if you have selected several lines, it&#8217;ll move them all togethe</p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p><code>ctrl-shift-J</code> can be handy for joining lines together</p>
-<div class="ulist">
-<ul>
-<li>
-<p>just hit enter to split them apart (even in string quotes; IntelliJ will "do the right thing")</p>
-</li>
-</ul>
-</div>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_intentions_and_code_completion">Intentions and Code Completion</h4>
-<div class="paragraph">
-<p>Massively useful is the "Intentions" popup; IntelliJ tries to guess what you might want to do.  You can activate this using`alt-enter`, whenever you see a lightbulb/tooltip in the margin of the current line.</p>
-</div>
-<div class="paragraph">
-<p>Code completion usually happens whenever you type '.'.  You can also use <code>ctrl-space</code> to bring these up.</p>
-</div>
-<div class="paragraph">
-<p>In certain circumstances (eg in methods0) you can also type <code>ctrl-shift-space</code> to get a smart list of methods etc that you might want to call.  Can be useful.</p>
-</div>
-<div class="paragraph">
-<p>Last, when invoking a method, use <code>ctrl-P</code> to see the parameter types.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_refactoring">Refactoring</h4>
-<div class="paragraph">
-<p>Loads of good stuff on the <code>Refactor</code> menu; most used are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Rename (<code>shift-F6</code>)</p>
-</li>
-<li>
-<p>Extract</p>
-<div class="ulist">
-<ul>
-<li>
-<p>method: <code>ctrl-alt-M</code></p>
-</li>
-<li>
-<p>variable: <code>ctrl-alt-V</code></p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p>Inline method/variable: <code>ctrl-alt-N</code></p>
-</li>
-<li>
-<p>Change signature</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>If you can&#8217;t remember all those shortcuts, just use <code>ctrl-shift-alt-T</code> (might want to rebind that to something else!) and get a context-sensitive list of refactorings available for the currently selected object</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_troubleshooting">Troubleshooting</h4>
-<div class="paragraph">
-<p>When a Maven module is imported, IntelliJ generates its own project files (suffix <code>.ipr</code>), and the application is actually built from that.</p>
-</div>
-<div class="paragraph">
-<p>Occasionally these don&#8217;t keep in sync (even if auto-import of Maven modules has been enabled).</p>
-</div>
-<div class="paragraph">
-<p>To fix the issue, try:
-* reimport module
-* rebuild selected modules/entire project
-* remove and then re-add the project
-* restart, invalidating caches
-* hit StackOverflow (!)</p>
-</div>
-<div class="paragraph">
-<p>One thing worth knowing; IntelliJ actively scans the filesystem all the time.  It&#8217;s therefore (almost always) fine to build the app from the Maven command line; IntelliJ will detect the changes and keep in sync.  If you want to force that, use <code>File &gt; Synchronize</code>, <code>ctrl-alt-Y</code>.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_advanced">Advanced</h3>
-<div class="paragraph">
-<p>In this section are a couple of options that will reduce the length of the change code/build/deploy/review feedback loop.</p>
-</div>
-<div class="sect3">
-<h4 id="_setting_up_dynamic_reloading">Setting up Dynamic Reloading</h4>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-TODO - see <a href="http://blog.jetbrains.com/idea/2013/07/get-true-hot-swap-in-java-with-dcevm-and-intellij-idea/">IntelliJ blog</a>.
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_setting_up_jrebel">Setting up JRebel</h4>
-<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>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_dg_eclipse">Setting up Eclipse</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>We highly recommend that you develop your Isis application using an IDE. Apache Isis is built with Maven, and all modern IDEs can import Maven projects.</p>
-</div>
-<div class="paragraph">
-<p>If you are an <a href="http://www.eclipse.org">Eclipse</a> user, then we recommend you download the "Eclipse JEE package" configuration.</p>
-</div>
-<div class="paragraph">
-<p>When running an Isis application, it&#8217;s necessary to setup the development environment so that the Java bytecode can be enhanced by the <a href="http://www.datanucleus.org">DataNucleus</a> enhancer.  If working in Eclipse, then JDO enhancement is most easily done by installing the <a href="http://www.datanucleus.org/products/datanucleus/jdo/guides/eclipse.html">DataNucleus' Eclipse plugin</a>.  This hooks the bytecode enhancement of your domain objects into Eclipse&#8217;s normal incremental compilation.</p>
-</div>
-<div class="paragraph">
-<p>This plugin needs to be configured for each of your domain modules (usually just one in any given app).  The steps are therefore:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>import the project into Eclipse</p>
-</li>
-<li>
-<p>configure the DataNucleus enhancer</p>
-</li>
-<li>
-<p>run the app from the <code>.launch</code> file</p>
-</li>
-</ul>
-</div>
-<div class="sect2">
-<h3 id="_screencast">Screencast</h3>
-<div class="paragraph">
-<p>The following screencast shows how to import an Apache Isis maven-based application into Eclipse and configure to use with the JDO Objectstore</p>
-</div>
-<div class="videoblock">
-<div class="content">
-<iframe width="640px" height="480px" src="//www.youtube.com/embed/RgcYfjQ8yJA?rel=0" frameborder="0" allowfullscreen></iframe>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_importing_the_project">Importing the Project</h3>
-<div class="paragraph">
-<p>Use File &gt; Import, then Maven &gt; Existing Maven Projects.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_add_datanucleus_support">Add DataNucleus support</h3>
-<div class="admonitionblock tip">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Make sure you are in the 'Java' Perspective, not the 'Java EE' Perspective.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>In Eclipse, for the <em>domain object model</em> project, first add DataNucleus support:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/appendices/dev-env/eclipse/eclipse-100-project-support.png"><img src="images/appendices/dev-env/eclipse/eclipse-100-project-support.png" alt="eclipse 100 project support" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Then turn on Auto-Enhancement:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/appendices/dev-env/eclipse/eclipse-110-project-support.png"><img src="images/appendices/dev-env/eclipse/eclipse-110-project-support.png" alt="eclipse 110 project support" width="600px"></a>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_update_the_classpath">Update the classpath</h4>
-<div class="paragraph">
-<p>DataNucleus' enhancer uses the domain object model&#8217;s own classpath to reference DataNucleus JARs. So, even though your domain objects are unlikely to depend on DataNucleus, these references must still be present.</p>
-</div>
-<div class="paragraph">
-<p>See the earlier section on <a href="ug.html#_ug_getting-started_datanucleus-enhancer">DataNucleus enhancer</a> for details of the contents of the <code>pom.xml</code>.  Chances are it is already set up from running the <a href="ug.html#_ug_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
-</div>
-<div class="paragraph">
-<p>Then, tell DataNucleus to use the project classpath:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images//appendices/dev-env/eclipse/eclipse-010-windows-preferences.png"><img src="images//appendices/dev-env/eclipse/eclipse-010-windows-preferences.png" alt="eclipse 010 windows preferences" width="750px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>When the enhancer runs, it will print out to the console:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images//appendices/dev-env/eclipse/eclipse-120-console.png"><img src="images//appendices/dev-env/eclipse/eclipse-120-console.png" alt="eclipse 120 console" width="500px"></a>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_workaround_for_path_limits_the_dn_plugin_to_use_the_persistence_xml">Workaround for path limits (the DN plugin to use the persistence.xml)</h4>
-<div class="paragraph">
-<p>If running on Windows then the DataNucleus plugin is very likely to hit the Windows path limit.</p>
-</div>
-<div class="paragraph">
-<p>To fix this, we configure the enhancer to read from the <code>persistence.xml</code> file.</p>
-</div>
-<div class="paragraph">
-<p>As a prerequisite, first make sure that your domain object model has a <code>persistence.xml</code> file.  Then specify the <code>persistence-unit</code> in the project properties:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images//appendices/dev-env/eclipse/eclipse-025-project-properties.png"><img src="images//appendices/dev-env/eclipse/eclipse-025-project-properties.png" alt="eclipse 025 project properties" width="750px"></a>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_workaround_if_the_enhancer_fails">Workaround: If the enhancer fails</h4>
-<div class="paragraph">
-<p>On occasion it appears that Eclipse can attempt to run two instances of the DataNucleus enhancer. This is probably due to multiple Eclipse builders being defined; we&#8217;ve noticed multiple entries in the Eclipse&#8217;s <code>Debug</code> view:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images//appendices/dev-env/eclipse/eclipse-210-enhancer-fails-duplicates.png"><img src="images//appendices/dev-env/eclipse/eclipse-210-enhancer-fails-duplicates.png" alt="eclipse 210 enhancer fails duplicates" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>At any rate, you&#8217;ll know you&#8217;ve encountered this error if you see the following in the console:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images//appendices/dev-env/eclipse/eclipse-200-enhancer-fails-duplicates.png"><img src="images//appendices/dev-env/eclipse/eclipse-200-enhancer-fails-duplicates.png" alt="eclipse 200 enhancer fails duplicates" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>The best solution is to remove DataNucleus support and then to re-add it:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images//appendices/dev-env/eclipse/eclipse-220-enhancer-fails-duplicates.png"><img src="images//appendices/dev-env/eclipse/eclipse-220-enhancer-fails-duplicates.png" alt="eclipse 220 enhancer fails duplicates" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>If you consistently hit problems, then the final recourse is to disable the automatic enhancement and to remember to manually enhance your domain object model before each run.</p>
-</div>
-<div class="paragraph">
-<p>Not ideal, we know. Please feel free to contribute a better solution :-)</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_running_the_app_2">Running the App</h3>
-<div class="paragraph">
-<p>The simpleapp archetype automatically provides a <code>.launch</code> configurations in the <code>webapp</code> module. You can therefore very simply run the application by right-clicking on one of these files, and choosing "Run As…" or "Debug As…".</p>
-</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 screencast above shows this in action.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_other_domain_projects">Other domain projects.</h3>
-<div class="paragraph">
-<p>There is nothing to prevent you having multiple domain projects. You might want to do such that each domain project corresponds to a <a href="http://www.methodsandtools.com/archive/archive.php?id=97p2">DDD module</a>, thus guaranteeing that there are no cyclic dependencies between your modules.</p>
-</div>
-<div class="paragraph">
-<p>If you do this, make sure that each project has its own <code>persistence.xml</code> file.</p>
-</div>
-<div class="paragraph">
-<p>And, remember also to configure Eclipse&#8217;s DataNucleus plugin for these other domain projects.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_dg_cmd-line">Developing from the Command Line</h2>
-<div class="sectionbody">
-<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>
-</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="#_developers_guide">Developers' Guide</a></li>
-<li><a href="#_dg_intellij">Setting up IntelliJ IDEA</a>
-<ul class="sectlevel2">
-<li><a href="#_installing_and_setting_up">Installing and Setting up</a>
-<ul class="sectlevel3">
-<li><a href="#_download_and_install">Download and Install</a></li>
-<li><a href="#_new_project">New Project</a></li>
-<li><a href="#_import_settings">Import Settings</a></li>
-<li><a href="#_other_settings">Other Settings</a></li>
-<li><a href="#_plugins">Plugins</a>
-<ul class="sectlevel4">
-<li><a href="#_maven_helper_plugin">Maven Helper Plugin</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#_importing_and_managing_maven_modules">Importing and Managing Maven Modules</a></li>
-<li><a href="#_running">Running</a>
-<ul class="sectlevel3">
-<li><a href="#_running_the_app">Running the App</a></li>
-<li><a href="#_running_the_unit_tests">Running the Unit Tests</a></li>
-<li><a href="#_running_the_integration_tests">Running the Integration Tests</a></li>
-</ul>
-</li>
-<li><a href="#_hints_and_tips">Hints and Tips</a>
-<ul class="sectlevel3">
-<li><a href="#_keyboard_shortcuts_cheat_sheets">Keyboard Shortcuts Cheat Sheets</a></li>
-<li><a href="#_switching_between_tool_windows_and_editors">Switching between Tool Windows and Editors</a></li>
-<li><a href="#_navigating_around">Navigating Around</a></li>
-<li><a href="#_editing">Editing</a></li>
-<li><a href="#_intentions_and_code_completion">Intentions and Code Completion</a></li>
-<li><a href="#_refactoring">Refactoring</a></li>
-<li><a href="#_troubleshooting">Troubleshooting</a></li>
-</ul>
-</li>
-<li><a href="#_advanced">Advanced</a>
-<ul class="sectlevel3">
-<li><a href="#_setting_up_dynamic_reloading">Setting up Dynamic Reloading</a></li>
-<li><a href="#_setting_up_jrebel">Setting up JRebel</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#_dg_eclipse">Setting up Eclipse</a>
-<ul class="sectlevel2">
-<li><a href="#_screencast">Screencast</a></li>
-<li><a href="#_importing_the_project">Importing the Project</a></li>
-<li><a href="#_add_datanucleus_support">Add DataNucleus support</a>
-<ul class="sectlevel3">
-<li><a href="#_update_the_classpath">Update the classpath</a></li>
-<li><a href="#_workaround_for_path_limits_the_dn_plugin_to_use_the_persistence_xml">Workaround for path limits (the DN plugin to use the persistence.xml)</a></li>
-<li><a href="#_workaround_if_the_enhancer_fails">Workaround: If the enhancer fails</a></li>
-</ul>
-</li>
-<li><a href="#_running_the_app_2">Running the App</a></li>
-<li><a href="#_other_domain_projects">Other domain projects.</a></li>
-</ul>
-</li>
-<li><a href="#_dg_cmd-line">Developing from the Command Line</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" === "Development Environment Guide") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/building-isis/setting-up-git.png
----------------------------------------------------------------------
diff --git a/content/guides/images/building-isis/setting-up-git.png b/content/guides/images/building-isis/setting-up-git.png
new file mode 100644
index 0000000..5ed2a79
Binary files /dev/null and b/content/guides/images/building-isis/setting-up-git.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/contributing/git-workflow-2.png
----------------------------------------------------------------------
diff --git a/content/guides/images/contributing/git-workflow-2.png b/content/guides/images/contributing/git-workflow-2.png
new file mode 100644
index 0000000..28cc822
Binary files /dev/null and b/content/guides/images/contributing/git-workflow-2.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/contributing/git-workflow.png
----------------------------------------------------------------------
diff --git a/content/guides/images/contributing/git-workflow.png b/content/guides/images/contributing/git-workflow.png
new file mode 100644
index 0000000..dde5573
Binary files /dev/null and b/content/guides/images/contributing/git-workflow.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/contributing/git-workflow.pptx
----------------------------------------------------------------------
diff --git a/content/guides/images/contributing/git-workflow.pptx b/content/guides/images/contributing/git-workflow.pptx
new file mode 100644
index 0000000..e83367b
Binary files /dev/null and b/content/guides/images/contributing/git-workflow.pptx differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/contributing/github-cloning.png
----------------------------------------------------------------------
diff --git a/content/guides/images/contributing/github-cloning.png b/content/guides/images/contributing/github-cloning.png
new file mode 100644
index 0000000..19c222d
Binary files /dev/null and b/content/guides/images/contributing/github-cloning.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/contributing/github-forking.png
----------------------------------------------------------------------
diff --git a/content/guides/images/contributing/github-forking.png b/content/guides/images/contributing/github-forking.png
new file mode 100644
index 0000000..3f8ff75
Binary files /dev/null and b/content/guides/images/contributing/github-forking.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/reference-classes/issue-in-more-detail.png
----------------------------------------------------------------------
diff --git a/content/guides/images/reference-classes/issue-in-more-detail.png b/content/guides/images/reference-classes/issue-in-more-detail.png
new file mode 100644
index 0000000..2297838
Binary files /dev/null and b/content/guides/images/reference-classes/issue-in-more-detail.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/jira-create-release-notes.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/jira-create-release-notes.png b/content/guides/images/release-process/jira-create-release-notes.png
new file mode 100644
index 0000000..2777532
Binary files /dev/null and b/content/guides/images/release-process/jira-create-release-notes.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/nexus-release-1.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/nexus-release-1.png b/content/guides/images/release-process/nexus-release-1.png
new file mode 100644
index 0000000..a00a1ba
Binary files /dev/null and b/content/guides/images/release-process/nexus-release-1.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/nexus-staging-0.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/nexus-staging-0.png b/content/guides/images/release-process/nexus-staging-0.png
new file mode 100644
index 0000000..127d485
Binary files /dev/null and b/content/guides/images/release-process/nexus-staging-0.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/nexus-staging-1.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/nexus-staging-1.png b/content/guides/images/release-process/nexus-staging-1.png
new file mode 100644
index 0000000..7266ea9
Binary files /dev/null and b/content/guides/images/release-process/nexus-staging-1.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/nexus-staging-2.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/nexus-staging-2.png b/content/guides/images/release-process/nexus-staging-2.png
new file mode 100644
index 0000000..d4a985a
Binary files /dev/null and b/content/guides/images/release-process/nexus-staging-2.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/nexus-staging-2a.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/nexus-staging-2a.png b/content/guides/images/release-process/nexus-staging-2a.png
new file mode 100644
index 0000000..894c168
Binary files /dev/null and b/content/guides/images/release-process/nexus-staging-2a.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/nexus-staging-3.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/nexus-staging-3.png b/content/guides/images/release-process/nexus-staging-3.png
new file mode 100644
index 0000000..8bc439c
Binary files /dev/null and b/content/guides/images/release-process/nexus-staging-3.png differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/images/release-process/nexus-staging-4.png
----------------------------------------------------------------------
diff --git a/content/guides/images/release-process/nexus-staging-4.png b/content/guides/images/release-process/nexus-staging-4.png
new file mode 100644
index 0000000..c3610b5
Binary files /dev/null and b/content/guides/images/release-process/nexus-staging-4.png differ


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/contributing.html
----------------------------------------------------------------------
diff --git a/content/contributing.html b/content/contributing.html
deleted file mode 100644
index 2fe5fff..0000000
--- a/content/contributing.html
+++ /dev/null
@@ -1,1130 +0,0 @@
-<!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>Contributing</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><br/><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>This page explains how you can contribute to Apache Isis. You&#8217;ll probably also want <a href="development-environment.html">set up your development environment</a> and learn <a href="building-isis.html">how to build Apache Isis</a>.</p>
-</div>
-<div class="paragraph">
-<p>Thanks for considering to help out, your contributions are appreciated!</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_recommended_workflow_github">Recommended Workflow (github)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Apache Isis' source code is hosted in an Apache git repo (<a href="https://git-wip-us.apache.org/repos/asf/isis.git">https</a>, <a href="http://git-wip-us.apache.org/repos/asf/isis.git">http</a>), with a clone on github (<a href="https://github.com/apache/isis.git">https</a>, or ssh: <code>git@github.com:apache/isis.git</code>.</p>
-</div>
-<div class="paragraph">
-<p>As you might imagine, only committers are permitted to push changes to the central git repo. As a contributor, we recommend that you fork the <a href="https://github.com/apache/isis.git">apache/isis</a> repo in github, and then use your fork as a way of publishing your patches for the Apache Isis committers to apply.</p>
-</div>
-<div class="paragraph">
-<p>The diagram below illustrates the process:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/contributing/git-workflow.png"><img src="images/contributing/git-workflow.png" alt="git workflow" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>That is:</p>
-</div>
-<div class="olist arabic">
-<ol class="arabic">
-<li>
-<p>as a one-time activity, you fork the <a href="https://github.com/apache/isis.git">github.com/apache/isis</a> repo into your own fork on github.com</p>
-</li>
-<li>
-<p>as a one-time activity, you clone your fork to your local computer</p>
-</li>
-<li>
-<p>you set the <a href="https://github.com/apache/isis.git">github.com/apache/isis</a> as your upstream branch; this will allow you to keep your local clone up-to-date with new commits</p>
-<div class="ulist">
-<ul>
-<li>
-<p>note the asymmetry here: the <code>upstream</code> repo (the Apache github repo) is <strong>not</strong> the same as the <code>origin</code> repo (your fork).</p>
-</li>
-</ul>
-</div>
-</li>
-<li>
-<p>you work on your changes locally; when done, you push them to your github fork</p>
-</li>
-<li>
-<p>to contribute back a change, raise a <a href="https://issues.apache.org/jira/browse/ISIS">JIRA</a> ticket, and ensure your commit message is in the form: <code>ISIS-nnnn: &#8230;&#8203;</code> so that changes can be tracked (more discussion on this point below). In any case, before you decide to start hacking with Apache Isis, it&#8217;s always worth creating a ticket in JIRA and then have a discussion about it on the <a href="http://isis.apache.org/support.html">mailing lists</a>.</p>
-</li>
-<li>
-<p>Use github to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a> for your feature</p>
-</li>
-<li>
-<p>An Apache Isis committer will review your change, and apply it if suitable.</p>
-</li>
-</ol>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_alternative_workflow_jira_patches">Alternative Workflow (JIRA patches)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>As an alternative, you may decide to clone directly from <a href="https://github.com/apache/isis.git">github.com/apache/isis</a> rather than create your own fork:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/contributing/git-workflow-2.png"><img src="images/contributing/git-workflow-2.png" alt="git workflow 2" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>In this case your <code>upstream</code> repo is the same as your <code>origin</code> repo, which might seem more straightforward. On the other hand, if you go this route then you&#8217;ll need create patches locally and attach them to the JIRA ticket.</p>
-</div>
-<div class="paragraph">
-<p>For the Apache Isis committers it really doesn&#8217;t matter which route you take, so go with whatever&#8217;s most comfortable.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_setting_up_your_fork_clone">Setting up your fork/clone</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If you choose to create your own fork then you&#8217;ll need an account on <a href="https://github.com">github.com</a>. You then fork simply by pressing the "Fork" button:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/contributing/github-forking.png"><img src="images/contributing/github-forking.png" alt="github forking" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>An account isn&#8217;t needed if you just clone straight from the <a href="http://github.com/apache/isis">github.com/apache/isis</a>.</p>
-</div>
-<div class="paragraph">
-<p>Whether you&#8217;ve forked or not, you then need to clone the repo onto your computer. Github makes this very easy to do:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>for Windows users, we suggest you use github&#8217;s 'Clone in Windows' feature</p>
-</li>
-<li>
-<p>for Mac/Linux users, create a clone from the command line:</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Again, the info is easily found in the github page:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/contributing/github-cloning.png"><img src="images/contributing/github-cloning.png" alt="github cloning" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>If you&#8217;ve created your own fork, then you need to add the <code>upstream</code> remote to the <a href="https://github.com/apache/isis">github.com/apache/isis</a>. This remote is traditionally called <code>upstream</code>. You should then arrange for your <code>master</code> branch to track the <code>upstream/master</code> remote branch:</p>
-</div>
-<div class="paragraph">
-<p>If you didn&#8217;t create your own fork, you can omit the above step. Either way around, you can now fetch new commits using simply:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git fetch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>For more info on tracking branches <a href="http://git-scm.com/book/en/Git-Branching-Remote-Branches">here</a> and <a href="http://gitready.com/beginner/2009/03/09/remote-tracking-branches.html">here</a>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_commit_messages">Commit messages</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Although with git your commits are always performed on your local repo, those commit messages become public when the patch is applied by an Apache Isis committer. You should take time to write a meaningful commit message that helps explain what the patch refers to; if you don&#8217;t then there&#8217;s a chance that your patch may be rejected and not applied. No-one likes hard work to go to waste!</p>
-</div>
-<div class="paragraph">
-<p>We therefore recommend that your commit messages are as follows [1]:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="other">ISIS-999: Make the example in CONTRIBUTING imperative and concrete
-
-Without this patch applied the example commit message in the CONTRIBUTING
-document is not a concrete example.  This is a problem because the
-contributor is left to imagine what the commit message should look like
-based on a description rather than an example.  This patch fixes the
-problem by making the example concrete and imperative.
-
-The first line is a real life imperative statement with a ticket number
-from our issue tracker.  The body describes the behavior without the patch,
-why this is a problem, and how the patch fixes the problem when applied.</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Once your git repo is setup, the next thing you&#8217;ll most likely want to do is to setup your development environment. See <a href="development-environment.html">here</a> for more details.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_creating_the_patch_file">Creating the patch file</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If you are working without a github fork of Apache Isis, then you can create the patches from your own local git repository.</p>
-</div>
-<div class="paragraph">
-<p>As per <a href="http://stackoverflow.com/questions/6658313/generate-a-git-patch-for-a-specific-commit">this stackoverflow question</a>, create the patch using <code>git format-patch</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git format-patch -10 HEAD --stdout &gt; 0001-last-10-commits.patch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Here <code>-10</code> is the last 10 commits you have done. You need to change that integer according to the commits you need to apply into the patch.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_sample_contribution_workflow">Sample Contribution Workflow</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Assuming you&#8217;re development environment is all setup, let&#8217;s walk through how you might make contribute a patch. In this example, suppose that you&#8217;ve decided to work on JIRA ticket #123, an enhancement to support Blob/Clob datatypes.</p>
-</div>
-<div class="sect2">
-<h3 id="_update_your_master_branch">Update your master branch</h3>
-<div class="paragraph">
-<p>The first thing to do is to make sure your local clone is up-to-date. We do this by retrieving new commits from upstream repo and then merging them as a fast-forward into your local branch.</p>
-</div>
-<div class="paragraph">
-<p>Irrespective of whether you are using a github fork, the upstream for your local <code>master</code> branch will be tracking the appropriate remote&#8217;s <code>master</code> branch. So n either case, the same commands work:</p>
-</div>
-<div class="paragraph">
-<p>Alternatively, you can combine the <code>git fetch</code> and <code>git merge</code> and just use <code>git pull</code>:
-&lt;pre&gt;
-git checkout master
-git pull –ff-only
-&lt;/pre&gt;</p>
-</div>
-<div class="paragraph">
-<p>If the <code>merge</code> or <code>pull</code> fails, it means that you must have made commits and there have been changes meanwhile on the remote <code>master&#8217;s branch. You can use `gitk --all</code> to confirm. If this fails, see our <a href="git-cookbook.html">git cookbook</a> page for a procedure to retrospectively sort out this situation.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_create_a_topic_branch">Create a topic branch</h3>
-<div class="paragraph">
-<p>We recommend you name topic branches by the JIRA ticket, ie &lt;tt&gt;ISIS-nnn-description&lt;/tt&gt;. So let&#8217;s create a new branch based off <code>master</code> and call it "ISIS-123-blobs"</p>
-</div>
-<div class="paragraph">
-<p>You can confirm the branch is there and is your new <code>HEAD</code> using either <code>gitk --all</code>. Alternatively, use the command line:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">$ git checkout -b ISIS-123-blobs</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The command line prompt should also indicate you are on a branch, isolated from any changes that might happen on the <code>master</code> branch.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_make_file_changes_and_commit">Make File Changes and Commit</h3>
-<div class="paragraph">
-<p>Next, make changes to your files using the usual commands (see also our <a href="git-cookbook.html">git cookbook</a> page):</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>git add</code></p>
-</li>
-<li>
-<p><code>git mv</code></p>
-</li>
-<li>
-<p><code>git rm</code></p>
-</li>
-<li>
-<p><code>git commit</code></p>
-</li>
-<li>
-<p><code>git status</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>and so on.</p>
-</div>
-<div class="paragraph">
-<p>Continue this way until happy with the change. Remember to run all your tests on the topic branch (including a full <code>mvn clean install</code>).</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_rebasing_with_code_master_code">Rebasing with <code>master</code></h3>
-<div class="paragraph">
-<p>Before you can share your change, you should rebase (in other words replay) your changes on top of the <code>master</code> branch.</p>
-</div>
-<div class="paragraph">
-<p>The first thing to do is to pull down any changes made in upstream remote&#8217;s <code>master</code> since you started your topic branch:</p>
-</div>
-<div class="paragraph">
-<p>These are the same commands that you would have run before you created your topic branch. If you use <code>gitk --all</code>, there&#8217;s a good chance that new commits have come in.</p>
-</div>
-<div class="paragraph">
-<p>Next, we reintegrate our topic branch by rebasing onto <code>master</code>:
-&lt;pre&gt;
-git checkout ISIS-123-blobs
-git rebase master
-&lt;/pre&gt;</p>
-</div>
-<div class="paragraph">
-<p>This takes all of the commits in your branch, and applies them on top of the new <code>master</code> branch. When your change is eventually integrated back in, it will result in a nice clear linear history on the public repo.</p>
-</div>
-<div class="paragraph">
-<p>If the rebase fails because of a conflict, then you&#8217;ll be dumped into REBASE mode. Edit the file that has the conflict, and make the appropriate edits. Once done:</p>
-</div>
-<div class="paragraph">
-<p>Once the rebase has completed, re-run your tests to confirm that everything is still good.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_raising_a_pull_request">Raising a pull request</h3>
-<div class="paragraph">
-<p>If you have your own fork, you can now simply push the changes you&#8217;ve made locally to your fork:</p>
-</div>
-<div class="paragraph">
-<p>This will create a corresponding branch in the remote github repo. If you use <code>gitk --all</code>, you&#8217;ll also see a <code>remotes/origin/ISIS-123-blobs</code> branch.</p>
-</div>
-<div class="paragraph">
-<p>Then, use github to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a>. Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail to the <a href="../support.html">dev mailing list</a>. You&#8217;ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn&#8217;t mandatory).</p>
-</div>
-<div class="paragraph">
-<p>The process to raise the pull request, broadly speaking:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Open a web browser to your github fork of isis</p>
-</li>
-<li>
-<p>Select your topic branch (pushed in the previous step) so that the pull request references the topic branch.</p>
-</li>
-<li>
-<p>Click the <code>Pull Request</code> button.</p>
-</li>
-<li>
-<p>Check that the Apache Isis mailing list email came through.</p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_if_your_pull_request_is_accepted">If your pull request is accepted</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To double check that your pull request is accepted, update your <code>master</code> branch from the <code>upstream</code> remote:</p>
-</div>
-<div class="paragraph">
-<p>You can then use <code>gitk --all</code> (or <code>git log</code> if you prefer the command line) to check your contribution has been added.</p>
-</div>
-<div class="paragraph">
-<p>You can now delete your topic branch and remove the branch in your github:</p>
-</div>
-<div class="paragraph">
-<p>Finally, you might want to push the latest changes in master back up to your github fork. If so, use:</p>
-</div>
-<div class="sect2">
-<h3 id="_if_your_pull_request_is_rejected">If your pull request is rejected</h3>
-<div class="paragraph">
-<p>If your pull request is rejected, then you&#8217;ll need to update your branch from the main repository and then address the rejection reason.</p>
-</div>
-<div class="paragraph">
-<p>You&#8217;ll probably also want to remove the remote branch on github:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete ISIS-123-blobs</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>… and continue as before until you are ready to resubmit your change.</p>
-</div>
-<div class="paragraph">
-<p>[1] inspiration for the recommended commit format comes from the <a href="https://github.com/puppetlabs/puppet">puppet</a> project&#8217;s <a href="https://github.com/puppetlabs/puppet/blob/master/CONTRIBUTING.md">contributing</a> page.</p>
-</div>
-</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="#_recommended_workflow_github">Recommended Workflow (github)</a></li>
-<li><a href="#_alternative_workflow_jira_patches">Alternative Workflow (JIRA patches)</a></li>
-<li><a href="#_setting_up_your_fork_clone">Setting up your fork/clone</a></li>
-<li><a href="#_commit_messages">Commit messages</a></li>
-<li><a href="#_creating_the_patch_file">Creating the patch file</a></li>
-<li><a href="#_sample_contribution_workflow">Sample Contribution Workflow</a>
-<ul class="sectlevel2">
-<li><a href="#_update_your_master_branch">Update your master branch</a></li>
-<li><a href="#_create_a_topic_branch">Create a topic branch</a></li>
-<li><a href="#_make_file_changes_and_commit">Make File Changes and Commit</a></li>
-<li><a href="#_rebasing_with_code_master_code">Rebasing with <code>master</code></a></li>
-<li><a href="#_raising_a_pull_request">Raising a pull request</a></li>
-</ul>
-</li>
-<li><a href="#_if_your_pull_request_is_accepted">If your pull request is accepted</a>
-<ul class="sectlevel2">
-<li><a href="#_if_your_pull_request_is_rejected">If your pull request is rejected</a></li>
-</ul>
-</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" === "Contributing") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/documentation.html
----------------------------------------------------------------------
diff --git a/content/documentation.html b/content/documentation.html
index bec8594..a057317 100644
--- a/content/documentation.html
+++ b/content/documentation.html
@@ -520,50 +520,44 @@ table.CodeRay td.code>pre{padding:0}
 <li>
 <p><a href="./common-use-cases.html">Common Use Cases</a></p>
 </li>
-<li>
-<p><a href="http://isisdemo.mmyco.co.uk/">Online demo</a> (todoapp)</p>
-</li>
 </ul>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>Archetypes and Apps:</strong></p>
+<p><strong>Learning More</strong></p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><strong><a href="./simpleapp-archetype.html">SimpleApp Archetype</a></strong></p>
-</li>
-<li>
-<p><a href="http://github.com/isisaddons/isis-app-todoapp">TodoApp Example App</a> (not ASF)</p>
+<p><a href="http://isisdemo.mmyco.co.uk/">Online demo</a> (todoapp)</p>
 </li>
 <li>
-<p><a href="http://github.com/isisaddons/isis-app-kitchensink">Kitchensink App</a> (not ASF)</p>
+<p><a href="./screencasts.html">Screencasts</a> <span class="image"><a class="image" href=""./screencasts.html"><img src="images/tv_show-25.png" alt="tv_show-25" width="25px"></a></span></p>
 </li>
-</ul>
-</div>
-<div class="paragraph">
-<p><strong>Isis Add-ons</strong></p>
-</div>
-<div class="ulist">
-<ul>
 <li>
-<p><a href="http://isisaddons.org">Isis addons</a> (not ASF)</p>
+<p><a href="./guides/tg.html">Tutorials</a></p>
 </li>
 </ul>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>Development Environment:</strong></p>
+<p><strong>Resources:</strong></p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="./guides/dg.html#_dg_intellij">Setting up IntelliJ</a></p>
+<p><strong><a href="./cheat-sheet.html">Cheat Sheet</a></strong></p>
 </li>
 <li>
-<p><a href="./guides/dg.html#_dg_eclipse">Setting up Eclipse</a></p>
+<p><a href="./icons.html">Icons</a></p>
 </li>
+</ul>
+</div>
+<div class="paragraph">
+<p><strong>Isis Add-ons</strong></p>
+</div>
+<div class="ulist">
+<ul>
 <li>
-<p><strong><a href="./editor-templates.html">IDE templates</a></strong> (IntelliJ and Eclipse)</p>
+<p><a href="http://isisaddons.org">Isis addons</a> (not ASF)</p>
 </li>
 </ul>
 </div></div></td>
@@ -579,145 +573,148 @@ table.CodeRay td.code>pre{padding:0}
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>User Guide:</strong></p>
+<p><strong>Users' Guide:</strong></p>
 </div>
 <div class="paragraph">
-<p>Core concepts, how tos, more advanced techniques, Wicket viewer, Restful Objects viewer, security, configuration, deployment, testing, extending</p>
+<p>Core concepts, how tos and more advanced techniques, using and customizing the Wicket viewer &amp; the Restful Objects viewer, security, testing</p>
 </div>
 <div class="paragraph">
-<p><a class="button guide" href="./guides/ug.html" role="button" target="_blank">User Guide »</a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>Reference Guide:</strong></p>
-</div>
-<div class="paragraph">
-<p>Annotations, reserved methods, method prefixes domain services (API and SPI), utility classes, object layout</p>
+<p><a class="button guide" href="./guides/ug.html" role="button" target="_blank">Users' Guide »</a></p>
 </div>
 <div class="paragraph">
-<p><a class="button guide" href="./guides/rg.html" role="button" target="_blank">Reference Guide »</a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>Resources:</strong></p>
-</div>
-<div class="paragraph">
-<p>To save you time</p>
+<p>including:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><strong><a href="./editor-templates.html">IDE templates</a></strong> (IntelliJ and Eclipse)</p>
+<p><strong><a href="./guides/ug.html#_ug_getting-started_simpleapp-archetype">Getting Started</a></strong> (SimpleApp Archetype)</p>
 </li>
 <li>
-<p><strong><a href="./cheat-sheet.html">Cheat Sheet</a></strong></p>
+<p><a href="./guides/ug.html#_ug_how-tos">How-tos</a></p>
 </li>
 <li>
-<p><a href="./icons.html">Icons</a></p>
+<p><a href="./guides/ug.html#_ug_wicket-viewer">Customizing the Wicket Viewer</a></p>
+</li>
+<li>
+<p><a href="./guides/ug.html#_ug_testing">Testing</a></p>
+</li>
+<li>
+<p><a href="./guides/ug.html#_ug_extending">Extending</a></p>
 </li>
 </ul>
 </div></div></td>
-</tr>
-</tbody>
-</table>
-<table class="tableblock frame-none grid-all spread">
-<colgroup>
-<col style="width: 33%;">
-<col style="width: 33%;">
-<col style="width: 33%;">
-</colgroup>
-<tbody>
-<tr>
 <td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>Further resources:</strong></p>
+<p><strong>Reference Guide:</strong></p>
+</div>
+<div class="paragraph">
+<p>Programming model (annotations, methods), domain services (API and SPI), utility classes, UI layout, runtime configuration properties</p>
 </div>
 <div class="paragraph">
-<p>For digging deeper</p>
+<p><a class="button guide" href="./guides/rg.html" role="button" target="_blank">Reference Guide »</a></p>
+</div>
+<div class="paragraph">
+<p>including:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="./screencasts.html">Screencasts</a> <span class="image"><a class="image" href=""./screencasts.html"><img src="images/tv_show-25.png" alt="tv_show-25" width="25px"></a></span></p>
+<p><a href="./guides/rg.html#_rg_annotations">Annotations</a></p>
 </li>
 <li>
-<p><a href="./articles-and-presentations.html">Articles, Conferences, Podcasts</a></p>
+<p><strong><a href="./guides/rg.html#_rg_methods">Methods</a></strong></p>
 </li>
 <li>
-<p><a href="./books.html">Books</a></p>
+<p><strong><a href="./guides/rg.html#_rg_services-api">Domain Services API</a></strong></p>
 </li>
 <li>
-<p><a href="./resources/thesis/Pawson-Naked-Objects-thesis.pdf">Naked Objects PhD thesis</a> (Pawson)</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p><strong>Releases:</strong></p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="release-notes.html">Release Notes</a></p>
+<p><a href="./guides/rg.html#_rg_services-spi">Domain Services SPI</a></p>
 </li>
 <li>
-<p><a href="migration-notes.html">Migration Notes</a></p>
+<p><a href="./guides/rg.html#_rg_runtime">Configuration Properties</a></p>
 </li>
 </ul>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>Contributors:</strong></p>
+<p><strong>Contributors' Guide</strong></p>
+</div>
+<div class="paragraph">
+<p>IDE setup, build the framework, writing docs, how to contribute patches (pull requests); for committers: publishing docs, applying patches, release process.</p>
+</div>
+<div class="paragraph">
+<p><a class="button guide" href="./guides/cg.html" role="button" target="_blank">Contributors' Guide »</a></p>
+</div>
+<div class="paragraph">
+<p>including:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="./contributing.html">Contributing</a></p>
-</li>
-<li>
-<p><a href="./building-isis.html">Building Apache Isis</a></p>
+<p>Setting up <a href="./guides/cg.html#_cg_ide_intellij">IntelliJ</a> or <a href="./guides/cg.html#_cg_ide_eclipse">Eclipse</a></p>
 </li>
 <li>
-<p><a href="./git-policy.html">Git Policy</a></p>
+<p><a href="./guides/cg.html#_cg_ide-templates"><strong>IDE templates</strong></a> (IntelliJ and Eclipse)</p>
 </li>
 <li>
-<p><a href="./git-cookbook.html">Git Cookbook</a></p>
+<p><a href="./guides/cg.html#_cg_contributing">Contributing patches</a> (pull requests)</p>
 </li>
 <li>
-<p><a href="./versioning-policy.html">Versioning Policy</a></p>
+<p><a href="./guides/cg.html#_cg_committers_cutting-a-release">Cutting a release</a> (and <a href="./guides/cg.html#_cg_committers_cutting-a-release-one-pager"><strong>one-pager</strong></a>)</p>
 </li>
 </ul>
 </div></div></td>
+</tr>
+</tbody>
+</table>
+<table class="tableblock frame-none grid-all spread">
+<colgroup>
+<col style="width: 33%;">
+<col style="width: 33%;">
+<col style="width: 33%;">
+</colgroup>
+<tbody>
+<tr>
 <td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><strong>Committers</strong>:</p>
+<p><strong>Example Apps:</strong></p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="./applying-patches.html">Applying Patches</a></p>
+<p><a href="http://github.com/estatio/estatio">Estatio</a> (not ASF)</p>
 </li>
 <li>
-<p><a href="./recreating-an-archetype.html">Recreating an archetype</a></p>
-</li>
-<li>
-<p><a href="./snapshot-process.html">Snapshot process</a></p>
+<p><a href="http://github.com/isisaddons/isis-app-todoapp">TodoApp Example App</a> (not ASF)</p>
 </li>
 <li>
-<p><a href="./release-process.html">Release process</a> (<a href="./release-process-one-pager.html">one-pager</a>)</p>
+<p><a href="http://github.com/isisaddons/isis-app-kitchensink">Kitchensink App</a> (not ASF)</p>
 </li>
+</ul>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><strong>Going Deeper:</strong></p>
+</div>
+<div class="ulist">
+<ul>
 <li>
-<p><a href="./release-branch-and-tag-names.html">Release branch and tag names</a></p>
+<p><a href="./articles-and-presentations.html">Articles, Conferences, Podcasts</a></p>
 </li>
 <li>
-<p><a href="./verifying-releases.html">Verifying releases</a></p>
+<p><a href="./books.html">Books</a></p>
 </li>
 <li>
-<p><a href="./key-generation.html">Key generation</a></p>
+<p><a href="./resources/thesis/Pawson-Naked-Objects-thesis.pdf">Naked Objects PhD thesis</a> (Pawson)</p>
 </li>
 </ul>
-</div>
-<div class="paragraph">
-<p><strong>PMC</strong>:</p>
+</div></div></td>
+<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<p><strong>Releases:</strong></p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="./pmc-notes.html">Notes</a></p>
+<p><a href="release-notes.html">Release Notes</a></p>
+</li>
+<li>
+<p><a href="migration-notes.html">Migration Notes</a></p>
 </li>
 </ul>
 </div></div></td>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/editor-templates.html
----------------------------------------------------------------------
diff --git a/content/editor-templates.html b/content/editor-templates.html
deleted file mode 100644
index 181405e..0000000
--- a/content/editor-templates.html
+++ /dev/null
@@ -1,882 +0,0 @@
-<!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>Editor Templates</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><br/><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>We provide IDE templates (for IntelliJ and Eclipse) for writing Apache Isis domain objects, and also for unit tests (JUnit and JMock).</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_download">Download</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The following table lists the templates to download</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-<col style="width: 25%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Template</th>
-<th class="tableblock halign-left valign-top">Prefix</th>
-<th class="tableblock halign-left valign-top">IntelliJ</th>
-<th class="tableblock halign-left valign-top">Eclipse</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Apache Isis Domain Objects</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>is</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="./resources/templates/isis-templates-idea.xml">Download</a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="./resources/templates/isis-templates.xml">Download</a></p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>JUnit tests</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>ju</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="./resources/templates/junit4-templates-idea.xml">Download</a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="./resources/templates/junit4-templates.xml">Download</a></p>
-</div></div></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>JMock tests</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>jm</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="./resources/templates/jmock2-templates-idea.xml">Download</a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a href="./resources/templates/jmock2-templates.xml">Download</a></p>
-</div></div></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>The most commonly used Apache Isis domain objects templates are also listed on the <a href="./cheat-sheet.html">Apache Isis cheat sheet</a>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_installation">Installation</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_intellij">IntelliJ</h3>
-<div class="paragraph">
-<p>To install in IntelliJ, copy to the relevant <code>config/templates</code> directory, eg:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Windows <code>&lt;User home&gt;\.IntelliJIdea14\config\templates</code></p>
-</li>
-<li>
-<p>Linux <code>~/.IntelliJIdea14/config/templates</code></p>
-</li>
-<li>
-<p>Mac OS <code>~/Library/Preferences/IntelliJIdea14/templates</code></p>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_eclipse">Eclipse</h3>
-<div class="paragraph">
-<p>To install in Eclipse, go to <code>Windows &gt; Preferences &gt; Java &gt; Editor &gt; Templates</code> and choose <code>Import</code>.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_usage">Usage</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Enter the prefix (<code>is</code>, <code>ju</code>, <code>jm</code>) and the IDE will list all available templates in that category.</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="#_download">Download</a></li>
-<li><a href="#_installation">Installation</a>
-<ul class="sectlevel2">
-<li><a href="#_intellij">IntelliJ</a></li>
-<li><a href="#_eclipse">Eclipse</a></li>
-</ul>
-</li>
-<li><a href="#_usage">Usage</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" === "Editor Templates") {
-        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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/release-process-one-pager.html
----------------------------------------------------------------------
diff --git a/content/release-process-one-pager.html b/content/release-process-one-pager.html
deleted file mode 100644
index 7cc5910..0000000
--- a/content/release-process-one-pager.html
+++ /dev/null
@@ -1,1114 +0,0 @@
-<!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>Release Process (1 pager)</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>See also the <a href="release-process.html">full release process</a> and the <a href="release-checklist.html">release checklist</a>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_switch_to_correct_directory_parameterize_the_release">Switch to correct directory, parameterize the release</h2>
-<div class="sectionbody">
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Make sure you are in the correct directory (eg <code>core</code>, or <code>example/archetype/zzz</code>)</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>if you are releasing <code>core</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>cd core
-
-export ISISTMP=/c/tmp              # or whatever
-export ISISART=isis
-export ISISDEV=1.9.0-SNAPSHOT
-export ISISREL=1.8.0
-export ISISRC=RC1
-
-export ISISCOR="Y"
-env | grep ISIS | sort</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>See <a href="recreating-an-archetype.html">here</a> for details on recreating and releasing an archetype.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_get_code">Get code</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Pull down latest, create branch (eg <code>prepare/isis-1.8.0</code>):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git checkout master
-git pull --ff-only
-git checkout -b $ISISART-$ISISREL</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_update_parent_pom">Update parent pom</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Check:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>parent is <code>org.apache:apache</code> (non-SNAPSHOT version)</p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_check_for_snapshot_dependencies">Check for SNAPSHOT dependencies</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Search for any non-<code>SNAPSHOT</code> usages (including tck project, if any):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>grep SNAPSHOT `/bin/find . -name pom.xml | grep -v target | sort`</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>or (more thoroughly):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>vi `/bin/find . -name pom.xml | grep -v target | sort`</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_sanity_check">Sanity check</h2>
-<div class="sectionbody">
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Make sure you are in the correct directory (eg <code>core</code>, or <code>example/archetype/zzz</code>)</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Clean all local mvn artifacts and rebuild with <code>-o</code> flag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>cd core
-
-rm -rf ~/.m2/repository/org/apache/isis
-mvn clean install -o</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_check_versions">Check versions</h2>
-<div class="sectionbody">
-<div class="admonitionblock tip">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Actually, you may want to defer this and do after cutting the release (ie beginning of a new dev cycle)</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_update_plugin_versions">Update plugin versions</h3>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn versions:display-plugin-updates &gt; /tmp/foo
-grep "\-&gt;" /tmp/foo | /bin/sort -u</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_newer_dependencies">Newer dependencies:</h3>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn versions:display-dependency-updates &gt; /tmp/foo
-grep "\-&gt;" /tmp/foo | /bin/sort -u</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_update_license_information">Update license information</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_missing_license_headers_in_files">Missing license headers in files:</h3>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=50 -o
-for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_missing_spurious_code_supplemental_models_xml_code">Missing/spurious <code>supplemental-models.xml</code></h3>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn license:download-licenses
-if [ "$ISISCOR" == "Y" ]; then
-    groovy ../scripts/checkmissinglicenses.groovy
-else
-    groovy ../../../scripts/checkmissinglicenses.groovy
-fi</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_commit_changes">Commit changes</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Commit any changes from the preceding steps:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git commit -am "ISIS-nnnn: updates to pom.xml etc for release"</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_release">Release</h2>
-<div class="sectionbody">
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Make sure you are in the correct directory (eg <code>core</code>, or <code>example/archetype/zzz</code>)</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="sect2">
-<h3 id="_prepare">Prepare:</h3>
-<div class="paragraph">
-<p>first the dry run:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn release:prepare -P apache-release \
-                    -DdryRun=true \
-                    -DreleaseVersion=$ISISREL \
-                    -DdevelopmentVersion=$ISISDEV \
-                    -Dtag=$ISISART-$ISISREL-$ISISRC</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>then "for real":</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn release:prepare -P apache-release -DskipTests=true -Dresume=false \
-                    -DreleaseVersion=$ISISREL \
-                    -DdevelopmentVersion=$ISISDEV \
-                    -Dtag=$ISISART-$ISISREL-$ISISRC</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_confirm">Confirm:</h3>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>rm -rf $ISISTMP/$ISISART-$ISISREL
-mkdir $ISISTMP/$ISISART-$ISISREL
-
-if [ "$ISISCOR" == "Y" ]; then
-    ZIPDIR="$M2_REPO/repository/org/apache/isis/core/$ISISART/$ISISREL"
-else
-    ZIPDIR="$M2_REPO/repository/org/apache/isis/$ISISCPT/$ISISART/$ISISREL"
-fi
-echo "cp \"$ZIPDIR/$ISISART-$ISISREL-source-release.zip\" $ISISTMP/$ISISART-$ISISREL/."
-cp "$ZIPDIR/$ISISART-$ISISREL-source-release.zip" $ISISTMP/$ISISART-$ISISREL/.
-
-pushd $ISISTMP/$ISISART-$ISISREL
-unzip $ISISART-$ISISREL-source-release.zip
-
-cd $ISISART-$ISISREL
-mvn clean install
-
-cat DEPENDENCIES
-
-popd</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_perform">Perform:</h3>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn release:perform -P apache-release \
-    -DworkingDirectory=$ISISTMP/$ISISART-$ISISREL/checkout</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>The <code>workingDirectory</code> property is to avoid 260 char path issue if building on Windows.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_nexus_staging">Nexus staging</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Log onto <a href="http://repository.apache.org">repository.apache.org</a> and close the staging repo.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_git_branches_tags">Git branches/tags</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Push branch:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git push -u origin $ISISART-$ISISREL</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then push tag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git push origin refs/tags/$ISISART-$ISISREL-$ISISRC:refs/tags/$ISISART-$ISISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</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="#_switch_to_correct_directory_parameterize_the_release">Switch to correct directory, parameterize the release</a></li>
-<li><a href="#_get_code">Get code</a></li>
-<li><a href="#_update_parent_pom">Update parent pom</a></li>
-<li><a href="#_check_for_snapshot_dependencies">Check for SNAPSHOT dependencies</a></li>
-<li><a href="#_sanity_check">Sanity check</a></li>
-<li><a href="#_check_versions">Check versions</a>
-<ul class="sectlevel2">
-<li><a href="#_update_plugin_versions">Update plugin versions</a></li>
-<li><a href="#_newer_dependencies">Newer dependencies:</a></li>
-</ul>
-</li>
-<li><a href="#_update_license_information">Update license information</a>
-<ul class="sectlevel2">
-<li><a href="#_missing_license_headers_in_files">Missing license headers in files:</a></li>
-<li><a href="#_missing_spurious_code_supplemental_models_xml_code">Missing/spurious <code>supplemental-models.xml</code></a></li>
-</ul>
-</li>
-<li><a href="#_commit_changes">Commit changes</a></li>
-<li><a href="#_release">Release</a>
-<ul class="sectlevel2">
-<li><a href="#_prepare">Prepare:</a></li>
-<li><a href="#_confirm">Confirm:</a></li>
-<li><a href="#_perform">Perform:</a></li>
-</ul>
-</li>
-<li><a href="#_nexus_staging">Nexus staging</a></li>
-<li><a href="#_git_branches_tags">Git branches/tags</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" === "Release Process (1 pager)") {
-        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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/tg.html
----------------------------------------------------------------------
diff --git a/content/guides/tg.html b/content/guides/tg.html
new file mode 100644
index 0000000..a04e498
--- /dev/null
+++ b/content/guides/tg.html
@@ -0,0 +1,3098 @@
+<!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>
+
+    <!--
+        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 class="sect1">
+<h2 id="_tg">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 "petclinic" 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>the "stop scaffolding, start coding" 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="_ug_tutorials_pet-clinic">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="ug.html#_ug_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
+</div>
+<div class="paragraph">
+<p>It consists of just three domain classes (<a href="http://yuml.me/edit/3db2078c">http://yuml.me/3db2078c</a>):</p>
+</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 Pet</p>
+</li>
+<li>
+<p>register an Owner</p>
+</li>
+<li>
+<p>maintain a Pet&#8217;s details</p>
+</li>
+<li>
+<p>check in a Pet to visit the clinic</p>
+</li>
+<li>
+<p>enter a diagnosis</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>check out a Pet to visit the clinic</p>
+</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">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">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>
+</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>This tutorial was developed against Apache Isis 1.8.0-SNAPSHOT.  Since then 1.8.0 has been released, so simply replace "1.8.0-SNAPSHOT" for "1.8.0" wherever it appears in the <code>pom.xml</code> files.</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  \
+    -D archetypeGroupId=org.apache.isis.archetype \
+    -D archetypeArtifactId=simpleapp-archetype \
+    -D archetypeVersion=1.8.0 \
+    -D groupId=com.mycompany \
+    -D artifactId=petclinic \
+    -D version=1.0-SNAPSHOT \
+    -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
+    -B</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>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">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>Once that&#8217;s built then run using:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">mvn antrun:run -P self-host</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>A splash screen should appear offering to start up the app. Go ahead and start; the web browser should be opened at <a href="http://localhost:8080">http://localhost:8080</a></p>
+</div>
+<div class="paragraph">
+<p>Alternatively, you can run using the mvn-jetty-plugin:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">mvn jetty:run</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This will accomplish the same thing, though the webapp is mounted at a slightly different URL</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_the_app">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">Dev environment</h3>
+<div class="paragraph">
+<p>Set up <a href="cg.html#_cg_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">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">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">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">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">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>
+<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>)
+<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>
+<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>)
+<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">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">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 {
+    Cat,
+    Dog,
+    Budgie,
+    Hamster,
+    Tortoise
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Introduce a new property on <code>Pet</code> of this type:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Pet</span> {
+    ...
+    private PetSpecies species;
+    <span class="annotation">@javax</span>.jdo.annotations.Column(allowsNull = <span class="string"><span class="delimiter">&quot;</span><span class="content">false</span><span class="delimiter">&quot;</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">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> {
+    ...
+    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">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">...
+<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>)
+})
+<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> {
+    ...
+    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="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">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="keyword">return</span> owners;
+    }
+    ...
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Add an <code>owner</code> property to <code>Pet</code>, with supporting <code>autoCompleteXxx()</code> method (so that available owners are shown in a drop-down list box):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Pet</span> ... {
+    ...
+    private <span class="predefined-type">Owner</span> owner;
+    <span class="annotation">@javax</span>.jdo.annotations.Column(allowsNull = <span class="string"><span class="delimiter">&quot;</span><span class="content">false</span><span class="delimiter">&quot;</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="_ug_tutorials_stop-scaffolding-start-coding">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.</p>
+</div>
+<div class="paragraph">
+<p>There&#8217;s a bit of overlap with the <a href="ug.html#_ug_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">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">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  \
+    -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 \
+    -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
+    -B</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_build_and_run_2">Build and run</h3>
+<div class="paragraph">
+<p>Start off by building the app from the command line:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">cd myapp
+mvn clean install</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Once that&#8217;s built then run using:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">mvn antrun:run -P self-host</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>A splash screen should appear offering to start up the app. Go ahead and start; the web browser should be opened at <a href="http://localhost:8080">http://localhost:8080</a></p>
+</div>
+<div class="paragraph">
+<p>Alternatively, you can run using the mvn-jetty-plugin:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">mvn jetty:run</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This will accomplish the same thing, though the webapp is mounted at a slightly different URL</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_the_app_2">Using the app</h3>
+<div class="paragraph">
+<p>Navigate to the Wicket UI (eg <a href="http://localhost:8080/wicket">http://localhost:8080/wicket</a>), and login (sven/pass).</p>
+</div>
+<div class="paragraph">
+<p>Once at the home page:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>install fixtures</p>
+</li>
+<li>
+<p>list all objects</p>
+</li>
+<li>
+<p>create a new object</p>
+</li>
+<li>
+<p>list all objects</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Go back to the splash screen, and quit the app. Note that the database runs in-memory (using HSQLDB) so any data created will be lost between runs.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_dev_environment_2">Dev environment</h3>
+<div class="paragraph">
+<p>Set up <a href="cg.html#_cg_ide">an IDE</a> and import the project to be able to run and debug the app.</p>
+</div>
+<div class="paragraph">
+<p>Then set up a launch configuration and check that you can:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Run the app from within the IDE</p>
+</li>
+<li>
+<p>Run the app in debug mode</p>
+</li>
+<li>
+<p>Run with different deploymentTypes; note whether prototype actions (those annotated <a href="rg.html#_rg_annotations_manpage-Action_restrictTo"><code>@Action(restrictTo=PROTOTYPING</code></a>) are available or not:</p>
+</li>
+<li>
+<p><code>--type SERVER_PROTOTYPE</code></p>
+</li>
+<li>
+<p><code>--type SERVER</code></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_explore_codebase_2">Explore codebase</h3>
+<div class="paragraph">
+<p>Apache Isis applications are organized into several Maven modules. Within your IDE navigate to the various classes and correlate back to the generated UI:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>myapp</code> : parent module</p>
+</li>
+<li>
+<p><code>myapp-dom</code>: domain objects module</p>
+</li>
+<li>
+<p>entity: <code>dom.simple.SimpleObject</code></p>
+</li>
+<li>
+<p>repository: <code>dom.simple.SimpleObjects</code></p>
+</li>
+<li>
+<p><code>myapp-fixture</code>: fixtures module</p>
+</li>
+<li>
+<p>fixture script:`fixture.simple.SimpleObjectsFixture`</p>
+</li>
+<li>
+<p><code>myapp-integtests</code>: integration tests module</p>
+</li>
+<li>
+<p><code>myapp-webapp</code>: webapp module</p>
+</li>
+<li>
+<p>(builds the WAR file)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_testing_2">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="_prototyping">Prototyping</h3>
+<div class="paragraph">
+<p>Although testing is important, in this tutorial we want to concentrate on how to write features and to iterate quickly. So for now, exclude the <code>integtests</code> module. Later on in the tutorial we&#8217;ll add the tests back in so you can learn how to write automated tests for the features of your app.</p>
+</div>
+<div class="paragraph">
+<p>In the parent <code>pom.xml</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;modules&gt;</span>
+    <span class="tag">&lt;module&gt;</span>dom<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>fixture<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>integtests<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>webapp<span class="tag">&lt;/module&gt;</span>
+<span class="tag">&lt;/modules&gt;</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>change to:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;modules&gt;</span>
+    <span class="tag">&lt;module&gt;</span>dom<span class="tag">&lt;/module&gt;</span>
+    <span class="tag">&lt;module&gt;</span>fixture<span class="tag">&lt;/module&gt;</span>
+    <span class="comment">&lt;!--
+    &lt;module&gt;integtests&lt;/module&gt;
+    --&gt;</span>
+    <span class="tag">&lt;module&gt;</span>webapp<span class="tag">&lt;/module&gt;</span>
+<span class="tag">&lt;/modules&gt;</span></code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_build_a_domain_app">Build a domain app</h3>
+<div class="paragraph">
+<p>The remainder of the tutorial provides guidance on building a domain application. We don&#8217;t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you&#8217;re stuck for ideas, then how about:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>a todo app (<code>ToDoItem</code>s)</p>
+</li>
+<li>
+<p>a pet clinic (<code>Pet</code>, <code>Owner</code>, <code>PetSpecies</code>, <code>Visit</code>)</p>
+</li>
+<li>
+<p>a library (<code>Book</code>, <code>Title</code>, <code>LibraryMember</code>, <code>Loan</code>, <code>Reservation</code>)</p>
+</li>
+<li>
+<p>a holiday cottage rental system</p>
+</li>
+<li>
+<p>a scrum/kanban system (inspired by Trello)</p>
+</li>
+<li>
+<p>a meeting planner (inspired by Doodle)</p>
+</li>
+<li>
+<p>(the domain model for) a CI server (inspired by Travis/Jenkins)</p>
+</li>
+<li>
+<p>a shipping system (inspired by the example in the DDD "blue" book)</p>
+</li>
+<li>
+<p>a system for ordering coffee (inspired by Restbucks, the example in "Rest in Practice" book)</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Hopefully one of those ideas appeals or sparks an idea for something of your own.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_domain_entity">Domain entity</h3>
+<div class="paragraph">
+<p>Most domain objects in Apache Isis applications are persistent entities. In the simpleapp archetype the <code>SimpleObject</code> is an example. We can start developing our app by refactoring that class:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>rename the <code>SimpleObject</code> class</p>
+<div class="ulist">
+<ul>
+<li>
+<p>eg rename to <code>Pet</code></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>if required, rename the <code>SimpleObject</code> class' <code>name</code> property</p>
+<div class="ulist">
+<ul>
+<li>
+<p>for <code>Pet</code>, can leave <code>name</code> property as is</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>specify a <a href="ug.html#_ug_how-tos_ui-hints_object-titles-and-icons">title</a></p>
+</li>
+<li>
+<p>specify an <a href="ug.html#_ug_how-tos_ui-hints_object-titles-and-icons">icon</a></p>
+</li>
+<li>
+<p>make the entity bookmarkable by adding the <a href="rg.html#_rg_annotations_manpage-DomainObjectLayout_bookmarking"><code>@DomainObjectLayout#bookmarking()</code></a> attribute.</p>
+</li>
+<li>
+<p>confirm is available from bookmark panel (top-left of Wicket UI)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_domain_service">Domain service</h3>
+<div class="paragraph">
+<p>Domain services often act as factories or repositories to entities; more generally can be used to "bridge across" to other domains/bounded contexts. Most are application-scoped, but they can also be request-scoped if required.</p>
+</div>
+<div class="paragraph">
+<p>In the simpleapp archetype the <code>SimpleObjects</code> service is a factory/repository for the original <code>SimpleObject</code> entity. For our app it therefore makes sense to refactor that class into our own first service:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>rename the <code>SimpleObjects</code> class</p>
+<div class="ulist">
+<ul>
+<li>
+<p>eg rename to <code>Pets</code></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>review <code>create</code> action (acting as a factory)</p>
+<div class="ulist">
+<ul>
+<li>
+<p>as per the docs describing <a href="ug.html#_ug_how-tos_crud">how to create or delete objects</a></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>rename if you wish</p>
+<div class="ulist">
+<ul>
+<li>
+<p>eg <code>newPet(&#8230;&#8203;)</code> or <code>addPet(&#8230;&#8203;)</code></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>review <code>listAll</code> action (acting as a repository)</p>
+</li>
+<li>
+<p>as per the docs describing <a href="ug.html#_ug_how-tos_crud">how to write a custom repository</a></p>
+</li>
+<li>
+<p>note the annotations on the corresponding domain class (originally called <code>SimpleObject</code>, though renamed by now, eg to <code>Pet</code>)</p>
+</li>
+<li>
+<p>rename if you wish</p>
+<div class="ulist">
+<ul>
+<li>
+<p>eg <code>listPets()</code></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>note the <a href="rg.html#_rg_annotations_manpage-DomainService"><code>@DomainService</code></a> annotation</p>
+</li>
+<li>
+<p>optional: add an action to a return subset of objects</p>
+<div class="ulist">
+<ul>
+<li>
+<p>use the JDO <code>@Query</code> annotation</p>
+</li>
+<li>
+<p>see for example the Isisaddons example <a href="https://github.com/isisaddons/isis-app-todoapp">todoapp</a> (not ASF), see <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java#L93">here</a> and <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java#L63">here</a></p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_fixture_scripts">Fixture scripts</h3>
+<div class="paragraph">
+<p>Fixture scripts are used to setup the app into a known state. They are great for demo&#8217;s and as a time-saver when implementing a feature, and they can also be reused in automated integration tests. We usually also have a fixture script to zap all the (non-reference) data (or some logical subset of the data)</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>rename the <code>SimpleObjectsTearDownFixture</code> class</p>
+</li>
+<li>
+<p>and update to delete from the appropriate underlying database table(s)</p>
+</li>
+<li>
+<p>use the injected <a href="rg.html#_rg_services-api_manpage-IsisJdoSupport"><code>IsisJdoSupport</code></a> domain service.</p>
+</li>
+<li>
+<p>refactor/rename the fixture script classes that create instances your entity:</p>
+</li>
+<li>
+<p><code>RecreateSimpleObjects</code>, which sets up a set of objects for a given scenario</p>
+</li>
+<li>
+<p><code>SimpleObjectCreate</code> which creates a single object</p>
+</li>
+<li>
+<p>note that domain services can be injected into these fixture scripts</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_actions">Actions</h3>
+<div class="paragraph">
+<p>Most business functionality is implemented using actions� basically a <code>public</code> method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered immediately; if a collection is returned then the Wicket viewer renders a table. Such collections are sometimes called "standalone" collections.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>write an action to update the domain property (originally called <code>SimpleObject#name</code>, though renamed by now)</p>
+</li>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-ParameterLayout_named"><code>@ParameterLayout(named=&#8230;&#8203;)</code></a> annotation to specify the name of action parameters</p>
+</li>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-Action_semantics"><code>@Action(semanticsOf=&#8230;&#8203;)</code></a>  annotation to indicate the semantics of the action (safe/query-only, idempotent or non-idempotent)</p>
+</li>
+<li>
+<p>annotate safe action as bookmarkable using <a href="rg.html#_rg_annotations_manpage-ActionLayout_bookmarking"><code>@ActionLayout(bookmarking=&#8230;&#8203;)</code></a></p>
+</li>
+<li>
+<p>confirm is available from bookmark panel (top-left of Wicket UI)</p>
+</li>
+<li>
+<p>optional: add an action to clone an object</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_rest_api">REST API</h3>
+<div class="paragraph">
+<p>As well as exposing the Wicket viewer, Isis also exposes a REST API (an implementation of the <a href="http://restfulobjects.org">Restful Objects spec</a>). All of the functionality of the domain object model is available through this REST API.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>add Chrome extensions</p>
+</li>
+<li>
+<p>install <a href="https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en">Postman</a></p>
+</li>
+<li>
+<p>install <a href="https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en">JSON-View</a></p>
+</li>
+<li>
+<p>browse to Wicket viewer, install fixtures</p>
+</li>
+<li>
+<p>browse to the <a href="http://localhost:8080/restful">http://localhost:8080/restful</a> API</p>
+</li>
+<li>
+<p>invoke the service to list all objects</p>
+</li>
+<li>
+<p>services</p>
+</li>
+<li>
+<p>actions</p>
+</li>
+<li>
+<p>invoke (invoking 0-arg actions is easy; the Restful Objects spec defines how to invoke N-arg actions)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_specify_action_semantics">Specify Action semantics</h3>
+<div class="paragraph">
+<p>The semantics of an action (whether it is safe/query only, whether it is idempotent, whether it is neither) can be specified for each action; if not specified then Isis assumes non-idempotent. In the Wicket viewer this matters in that only query-only actions can be bookmarked or used as contributed properties/collections. In the RESTful viewer this matters in that it determines the HTTP verb (GET, PUT or POST) that is used to invoke the action.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>experiment changing <a href="rg.html#_rg_annotations_manpage-Action_semantics"><code>@Action(semantics=&#8230;&#8203;)</code></a> on actions</p>
+</li>
+<li>
+<p>note the HTTP methods exposed in the REST API change</p>
+</li>
+<li>
+<p>note whether the non-safe actions are bookmarkable (assuming that it has been annotated with <code>@ActionLayout(bookmarking=&#8230;&#8203;)</code>, that is).</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_value_properties">Value properties</h3>
+<div class="paragraph">
+<p>Domain entities have state: either values (primitives, strings) or references to other entities. In this section we explore adding some value properties</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>add some <a href="ug.html#_ug_how-tos_class-structure_properties">value properties</a>; also:</p>
+</li>
+<li>
+<p>for string properties</p>
+<div class="ulist">
+<ul>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-PropertyLayout_multiLine"><code>@Property(multiLine=&#8230;&#8203;)</code></a> annotation to render a text area instead of a text box</p>
+</li>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-Property_maxLength"><code>@Property(maxLength=&#8230;&#8203;)</code></a> annotation to specify the maximum number of characters allowable</p>
+</li>
+<li>
+<p>use joda date/time properties, bigdecimals and blob/clob properties</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-Property_optionality"><code>@Column(allowsNull=&#8230;&#8203;)</code></a> annotation specify whether a property is optional or mandatory</p>
+</li>
+<li>
+<p>use enums for properties (eg as used in the Isis addons example <a href="https://github.com/isisaddons/isis-app-todoapp">todoapp</a>, see <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java#L207">here</a> and <a href="https://github.com/apache/isis/blob/b3e936c9aae28754fb46c2df52b1cb9b023f9ab8/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java#L266">here</a>)</p>
+</li>
+<li>
+<p>update the corresponding domain service for creating new instances</p>
+</li>
+<li>
+<p>for all non-optional properties will either need to prompt for a value, or calculate some suitable default</p>
+</li>
+<li>
+<p>change the implementation of title, if need be</p>
+</li>
+<li>
+<p>revisit the title, consider whether to use the <a href="rg.html#_rg_annotations_manpage-Title"><code>@Title</code></a> annotation</p>
+<div class="ulist">
+<ul>
+<li>
+<p>rather than the <a href="rg.html#_rg_methods_reserved_manpage-title"><code>title()</code></a> <code>title()</code> method</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>order the properties using the <a href="rg.html#_rg_annotations_manpage-MemberOrder"><code>@MemberOrder</code></a>, also <code>@MemberGroupLayout</code></p>
+<div class="ulist">
+<ul>
+<li>
+<p>see also the docs on <a href="rg.html#_rg_object-layout_static">static layouts</a></p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-PropertyLayout"><code>@PropertyLayout</code></a> annotation to position property/action parameter labels either to the LEFT, TOP or NONE</p>
+<div class="ulist">
+<ul>
+<li>
+<p>do the same for parameters using <a href="rg.html#_rg_annotations_manpage-ParameterLayout"><code>@ParameterLayout</code></a></p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_reference_properties">Reference properties</h3>
+<div class="paragraph">
+<p>Domain entities can also reference other domain entities. These references may be either scalar (single-valued) or vector (multi-valued). In this section we focus on scalar reference properties.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>add some <a href="ug.html#_ug_how-tos_class-structure_properties">reference properties</a></p>
+</li>
+<li>
+<p>update the corresponding domain service (for creation actoin)</p>
+</li>
+<li>
+<p>use different techniques to obtain references (shown in drop-down list box)</p>
+<div class="ulist">
+<ul>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-DomainObject_bounded"><code>@DomainObjectLayout(bounded=&#8230;&#8203;)</code></a> annotation on the referenced type if there are only a small number (bounded) of instances</p>
+</li>
+<li>
+<p>use a <a href="rg.html#_rg_methods_prefixes_manpage-choices"><code>choices&#8230;&#8203;()</code></a> supporting method</p>
+<div class="ulist">
+<ul>
+<li>
+<p>on a property</p>
+</li>
+<li>
+<p>on an action parameter</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>use a <a href="rg.html#_rg_methods_prefixes_manpage-autoComplete"><code>autoComplete&#8230;&#8203;()</code></a> supporting method</p>
+<div class="ulist">
+<ul>
+<li>
+<p>on a property</p>
+</li>
+<li>
+<p>on an action parameter</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_usability_defaults">Usability: Defaults</h3>
+<div class="paragraph">
+<p>Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add <a href="ug.html#_ug_how-tos_drop-downs-and-defaults">defaults</a> for action parameters</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_collections">Collections</h3>
+<div class="paragraph">
+<p>Returning back to references, Isis also supports vector (multi-valued) references to another object instances� in other words collections. We sometimes called these "parented" collections (to distinguish from a "standalone" collection as returned from an action)</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Ensure that all domain classes implement <code>java.lang.Comparable</code></p>
+<div class="ulist">
+<ul>
+<li>
+<p>use the <a href="rg.html#_rg_classes_utility_manpage-ObjectContracts"><code>ObjectContracts</code></a> utility class to help implement <code>Comparable</code></p>
+<div class="ulist">
+<ul>
+<li>
+<p>you can also <code>equals()</code>, <code>hashCode()</code>, <code>toString()</code></p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Add a <a href="ug.html#_ug_how-tos_class-structure_collections">collection</a> to one of the entities</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Use <code>SortedSet</code> as the class</p>
+</li>
+<li>
+<p>Use the <a href="rg.html#_rg_annotations_manpage-CollectionLayout_render"><code>@CollectionLayout(render=&#8230;&#8203;)</code></a> annotation to indicate if the collection should be visible or hidden by default</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>optional: use the <a href="rg.html#_rg_annotations_manpage-CollectionLayout_sortedBy"><code>@CollectionLayout(sortedBy=&#8230;&#8203;)</code></a> annotation to specify a different comparator than the natural ordering</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_actions_and_collections">Actions and Collections</h3>
+<div class="paragraph">
+<p>The Wicket UI doesn&#8217;t allow collections to be modified (added to/removed from). However, we can easily write actions to accomplish the same. Moreover, these actions can provide some additional business logic. For example: it probably shouldn&#8217;t be possible to add an object twice into a collection, so it should not be presented in the list of choices/autoComplete; conversely, only those objects in the collection should be offered as choices to be removed.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add domain actions to add/remove from the collection</p>
+</li>
+<li>
+<p>to create objects, <a href="ug.html#_ug_how-tos_class-structure_inject-services">inject</a> associated domain service</p>
+<div class="ulist">
+<ul>
+<li>
+<p>generally we recommend using the <a href="rg.html#_rg_annotations_manpage-Inject"><code>@Inject</code></a> annotation with either private or default visibility</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>the service itself should use <a href="rg.html#_rg_services-api_manpage-DomainObjectContainer"><code>DomainObjectContainer</code></a></p>
+</li>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-MemberOrder"><code>@MemberOrder(name=&#8230;&#8203;)</code></a> annotation to associate an action with a property or with a collection</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_css_ui_hints">CSS UI Hints</h3>
+<div class="paragraph">
+<p>CSS classes can be associated with any class member (property, collection, action). But for actions in particular:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>the bootstrap "btn" CSS classes can be used using the <a href="rg.html#_rg_annotations_manpage-ActionLayout_cssClass"><code>@ActionLayout(cssClass=&#8230;&#8203;)</code></a> annotation</p>
+</li>
+<li>
+<p>the <a href="http://fortawesome.github.io/Font-Awesome/icons/">Font Awesome</a> icons can be used using the <a href="rg.html#_rg_annotations_manpage-ActionLayout_cssClassFa"><code>@ActionLayout(cssClassFa=&#8230;&#8203;)</code></a></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>It&#8217;s also possible to use Font Awesome icons for the <a href="ug.html#_ug_how-tos_ui-hints_object-titles-and-icons">domain object icon</a>.</p>
+</div>
+<div class="paragraph">
+<p>So:
+- for some of the actions of your domain services or entities, annotate using <code>@ActionLayout(cssClass=&#8230;&#8203;)</code> or <code>@ActionLayout(cssClassFa=&#8230;&#8203;)</code></p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_dynamic_layout">Dynamic Layout</h3>
+<div class="paragraph">
+<p>Up to this point we&#8217;ve been using annotations (<code>@MemberOrder</code>, <code>@MemberGroupLayout</code>, <code>@Named</code>, <code>@PropertyLayout</code>, <code>@ParameterLayout</code>, <code>@ActionLayout</code> and so on) for UI hints. However, the feedback loop is not good: it requires us stopping the app, editing the code, recompiling and running again. So instead, all these UI hints (and more) can be specified dynamically, using a corresponding <code>.layout.json</code> file. If edited while the app is running, it will be reloaded automatically (in IntelliJ, use Run&gt;Reload Changed Classes):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Delete the various hint annotations and instead specify layout hints using a <a href="rg.html#_rg_object-layout_dynamic">.layout.json</a> file.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_business_rules">Business rules</h3>
+<div class="paragraph">
+<p>Apache Isis excels for domains where there are complex business rules to enforce. The UI tries not to constrain the user from navigating around freely, however the domain objects nevertheless ensure that they cannot change into an invalid state. Such rules can be enforced either declaratively (using annotations) or imperatively (using code). The objects can do this in one of three ways:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>visibility: preventing the user from even seeing a property/collection/action</p>
+</li>
+<li>
+<p>usability: allowing the user to view a property/collection/action but not allowing the user to change it</p>
+</li>
+<li>
+<p>validity: allowing the user to modify the property/invoke the action, but validating that the new value/action arguments are correct before hand.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Or, more pithily: "see it, use it, do it"</p>
+</div>
+<div class="sect3">
+<h4 id="_see_it">See it!</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Use the <a href="rg.html#_rg_annotations_manpage-Property_hidden"><code>Property(hidden=&#8230;&#8203;)</code></a> annotation to make properties invisible</p>
+<div class="ulist">
+<ul>
+<li>
+<p>likewise <a href="rg.html#_rg_annotations_manpage-Collection_hidden"><code>@Collection(hidden=&#8230;&#8203;)</code></a> for collections</p>
+</li>
+<li>
+<p>the <a href="rg.html#_rg_annotations_manpage-Programmatic"><code>@Programmatic</code></a>  annotation can also be used and in many cases is to be preferred; the difference is that the latter means the member is not part of the Apache Isis metamodel.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Use the <a href="rg.html#_rg_methods_prefixes_manpage-hide"><code>hide&#8230;&#8203;()</code></a> supporting method on properties, collections and actions to make a property/collection/action invisible according to some imperative rule</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_use_it">Use it!</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Use the <a href="rg.html#_rg_annotations_manpage-Property_editing"><code>Property(editing=&#8230;&#8203;)</code></a> annotation to make property read-only</p>
+<div class="ulist">
+<ul>
+<li>
+<p>likewise <a href="rg.html#_rg_annotations_manpage-Collection_editing"><code>@Collection(editing=&#8230;&#8203;)</code></a> for collections</p>
+</li>
+<li>
+<p>alternatively, use <a href="rg.html#_rg_annotations_manpage-DomainObject_editing"><code>@DomainObject(editing=&#8230;&#8203;)</code></a> to disable editing for all properties/collections</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Use the <a href="rg.html#_rg_methods_prefixes_manpage-disable"><code>disable&#8230;&#8203;()</code></a> supporting method on properties and actions to make a property/action disabled according to some imperative rule</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_do_it">Do it!</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-Property_regexPattern"><code>@Property(regexPattern=&#8230;&#8203;)</code></a> annotation to specify a regex pattern for properties, and use <a href="rg.html#_rg_annotations_manpage-Parameter_regexPattern"><code>@Parameter(regexPattern=&#8230;&#8203;)</code></a> for parameters</p>
+</li>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-Property_maxLength"><code>@Property(maxLength=&#8230;&#8203;)</code></a> annotation to indicate a maxmum number of characters, and <a href="rg.html#_rg_annotations_manpage-Parameter_maxLength"><code>@Parameter(maxLength=&#8230;&#8203;)</code></a> for parameters</p>
+</li>
+<li>
+<p>Use the <a href="rg.html#_rg_methods_prefixes_manpage-validate"><code>validate&#8230;&#8203;()</code></a> supporting method on properties or action parameter</p>
+</li>
+<li>
+<p>optional: for any data type:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>use the <a href="rg.html#_rg_annotations_manpage-Property_mustSatisfy"><code>Property(mustSatisfy=&#8230;&#8203;)</code></a> and <a href="rg.html#_rg_annotations_manpage-Parameter_mustSatisfy"><code>Parameter(mustSatisfy=&#8230;&#8203;)</code></a> annotations to specify arbitrary constraints on properties and parameters</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_home_page">Home page</h3>
+<div class="paragraph">
+<p>The Wicket UI will automatically invoke the "home page" action, if available. This is a no-arg action of one of the domain services, that can return either an object (eg representing the current user) or a standalone action.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add the <a href="rg.html#_rg_annotations_manpage-HomePage"><code>@HomePage</code></a> annotation to one (no more) of the domain services' no-arg actions</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_clock_service">Clock Service</h3>
+<div class="paragraph">
+<p>To ensure testability, there should be no dependencies on system time, for example usage of <code>LocalDate.now()</code>. Instead the domain objects should delegate to the provided <code>ClockService</code>.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>remove any dependencies on system time (eg defaults for date/time action parameters)</p>
+</li>
+<li>
+<p>inject <a href="rg.html#_rg_services-api_manpage-ClockService"><code>ClockService</code></a></p>
+</li>
+<li>
+<p>call <code>ClockService.now()</code> etc where required.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_contributions">Using Contributions</h3>
+<div class="paragraph">
+<p>One of Apache Isis' most powerful features is the ability for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the "mixing in" is done at runtime, within the Apache Isis metamodel. In Apache Isis' terminology, we say that the domain service action is contributed to the entity.</p>
+</div>
+<div class="paragraph">
+<p>Any action of a domain service that has a domain entity type as one of its parameter types will (by default) be contributed. If the service action takes more than one argument, or does not have safe semantics, then it will be contributed as an entity action. If the service action has precisely one parameter type (that of the entity) and has safe semantics then it will be contributed either as a collection or as a property (dependent on whether it returns a collection of a scalar).</p>
+</div>
+<div class="paragraph">
+<p>Why are contributions so useful? Because the service action will match not on the entity type, but also on any of the entity&#8217;s supertypes (all the way up to <code>java.lang.Object</code>). That means that you can apply the <a href="http://en.wikipedia.org/wiki/Dependency_inversion_principle">dependency inversion principle</a> to ensure that the modules of your application have acyclic dependencies; but in the UI it can still appear as if there are bidirectional dependencies between those modules. The lack of bidirectional dependencies can help save your app degrading into a <a href="http://en.wikipedia.org/wiki/Big_ball_of_mud">big ball of mud</a>.</p>
+</div>
+<div class="paragraph">
+<p>Finally, note that the layout of contributed actions/collections/properties can be specified using the <code>.layout.json</code> file (and it is highly recommended that you do so).</p>
+</div>
+<div class="sect3">
+<h4 id="_contributed_actions">Contributed Actions</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Write a new domain service</p>
+<div class="ulist">
+<ul>
+<li>
+<p>by convention, called "XxxContributions"</p>
+</li>
+<li>
+<p>annotate with <a href="rg.html#_rg_annotations_manpage-DomainService_nature"><code>@DomainService(nature=NatureOfService.VIEW_CONTRIBUTIONS_ONLY)</code></a></p>
+<div class="ulist">
+<ul>
+<li>
+<p>indicates that all of the service&#8217;s actions should <em>not</em> be included in the main application menu bar</p>
+</li>
+<li>
+<p>should be rendered "as if" an action of the entity</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Write an action accepting &gt;1 args:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>one being a domain entity</p>
+</li>
+<li>
+<p>other being a primitive or String</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_contributed_collections">Contributed Collections</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Write a new domain service (or update the one previously)</p>
+</li>
+<li>
+<p>Write a query-only action accepting exactly 1 arg (a domain entity)</p>
+</li>
+<li>
+<p>returning a collection, list or set</p>
+</li>
+<li>
+<p>For this action:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>add the <a href="rg.html#_rg_annotations_manpage-ActionLayout_contributedAs"><code>@ActionLayout(contributedAs=ASSOCIATION)</code></a> annotation</p>
+</li>
+<li>
+<p>should be rendered in the UI "as if" a collection of the entity</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>use <code>.layout.json</code> to position as required</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_contributed_properties">Contributed Properties</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>As for contributed collections, write a new domain service with a query-only action accepting exactly 1 arg (a domain entity); except:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>returning a scalar value rather than a collection</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>For this action:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>add the <a href="rg.html#_rg_annotations_manpage-ActionLayout_contributedAs"><code>@ActionLayout(contributedAs=ASSOCIATION)</code></a> annotation</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>should be rendered in the UI "as if" a property of the entity</p>
+</li>
+<li>
+<p>use <code>.layout.json</code> to position as required</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_the_event_bus">Using the Event Bus</h3>
+<div class="paragraph">
+<p>Another way in which Apache Isis helps you keep your application nicely modulariz

<TRUNCATED>

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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/recreating-an-archetype.html
----------------------------------------------------------------------
diff --git a/content/recreating-an-archetype.html b/content/recreating-an-archetype.html
deleted file mode 100644
index 3dec709..0000000
--- a/content/recreating-an-archetype.html
+++ /dev/null
@@ -1,1180 +0,0 @@
-<!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>Recreating an 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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>Apache Isis archetypes are reverse engineered from example applications. Once reverse engineered, the source is checked into git (replacing any earlier version of the archetype) and released.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_setup_environment_variables">Setup environment variables</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To recreate the <strong>simpleapp</strong> archetype:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd example/application/simpleapp
-
-export ISISTMP=/c/tmp   # or as required
-export ISISART=simpleapp-archetype
-export ISISDEV=1.9.0-SNAPSHOT
-export ISISREL=1.8.0
-export ISISPAR=1.8.0
-export ISISRC=RC1
-
-export ISISCPT=$(echo $ISISART | cut -d- -f2)
-export ISISCPN=$(echo $ISISART | cut -d- -f1)
-
-env | grep ISIS | sort</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>nb: <code>$ISISPAR</code> is the version of the Apache Isis core that will act as the archetype&#8217;s parent. Usually this is the same as <code>$ISISREL</code>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_check_the_example_app">Check the example app</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Make sure you are in the correct directory, and update the parent <code>pom.xml</code> to reference the <em>released</em> version of Apache Isis core:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;properties&gt;</span>
-    <span class="tag">&lt;isis.version&gt;</span>1.8.0<span class="tag">&lt;/isis.version&gt;</span>
-    ...
-<span class="tag">&lt;/properties&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Alternatively, you could just load up each <code>pom.xml</code> and inspect manually:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">vi `/bin/find . -name pom.xml | grep -v target`</code></pre>
-</div>
-</div>
-<div class="olist lowerroman">
-<ol class="lowerroman" type="i">
-<li>
-<p>and search for <code>SNAPSHOT</code>.</p>
-</li>
-</ol>
-</div>
-<div class="paragraph">
-<p>Next, check for and fix any missing license header notices:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=50 -o
-for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Finally, double check that the app is running satisfactorily:</p>
-</div>
-<div class="paragraph">
-<p>first, as self-hosted webconsole (browse to <a href="http://localhost:8080">http://localhost:8080</a>):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn clean install
-mvn antrun:run -P self-host</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>then using mvn jetty plugin:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd webapp
-mvn jetty:run</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Browse to <a href="http://localhost:8080/simpleapp-webapp/">http://localhost:8080/simpleapp-webapp/</a>.</p>
-</div>
-<div class="paragraph">
-<p>Check the about page and confirm built against non-SNAPSHOT versions of the Apache Isis jars.</p>
-</div>
-<div class="sect2">
-<h3 id="_create_the_archetype_manual">Create the archetype (manual)</h3>
-<div class="admonitionblock important">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-important" title="Important"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>The archetype can be created either by hand or with a script. The section describes the manual approach; the scripted approach is in the section after.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Before we generate the archetype, we clear out all non source code artifacts.</p>
-</div>
-<div class="paragraph">
-<p>Start by doing the regular <code>mvn clean</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn clean</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To view the remaining files/directories that needs removing, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">for a in .project .classpath .settings bin .idea target-ide; do /bin/find . -name $a -print; done
-/bin/find . -name &quot;*.iml&quot; -print
-/bin/find . -name &quot;*.log&quot; -print
-/bin/find . -name &quot;pom.xml.*&quot; -print</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To actually delete these files, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">for a in .project .classpath .settings bin .idea target-ide; do /bin/find . -name $a -exec rm -r {} \;; done
-/bin/find . -name &quot;*.iml&quot; -exec rm {} \;
-/bin/find . -name &quot;*.log&quot; -exec rm {} \;
-/bin/find . -name &quot;pom.xml.*&quot; -exec rm {} \;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Quickly check that the remaining files are all source files:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">/bin/find .</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Now we can create the archetype.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn archetype:create-from-project</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>and then update the generated files:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">groovy ../../../scripts/updateGeneratedArchetypeSources.groovy -n $ISISCPN -v $ISISPAR</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>$ISISCPN</code> is the component name set earlier (<code>simpleapp</code>)</p>
-</li>
-<li>
-<p><code>$ISISPAR</code> is the version of Apache isis core that is to be the parent of the generated archetype,</p>
-<div class="ulist">
-<ul>
-<li>
-<p>this will usually be the same as <code>$ISISREL</code> unless a patch/interim release of the archetype.</p>
-</li>
-</ul>
-</div>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_test_the_archetype">Test the archetype</h3>
-<div class="paragraph">
-<p>First, build the archetype:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd target/generated-sources/archetype
-mvn clean install
-cd ../../..</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, <em>in a different session</em>, create a new app from the archetype:</p>
-</div>
-<div class="paragraph">
-<p>Set up environment variables:</p>
-</div>
-<div class="paragraph">
-<p>To test the <strong>simpleapp</strong> archetype:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">export ISISTMP=/c/tmp    # or as required
-export ISISCPN=simpleapp
-env | grep ISIS | sort</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then recreate:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf $ISISTMP/test-$ISISCPN
-
-mkdir $ISISTMP/test-$ISISCPN
-cd $ISISTMP/test-$ISISCPN
-mvn archetype:generate  \
-    -D archetypeCatalog=local \
-    -D groupId=com.mycompany \
-    -D artifactId=myapp \
-    -D archetypeGroupId=org.apache.isis.archetype \
-    -D archetypeArtifactId=$ISISCPN-archetype</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Build the newly generated app and test:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd myapp
-mvn clean install
-mvn antrun:run -P self-host    # runs as standalone app using webconsole
-cd webapp
-mvn jetty:run                  # runs as mvn jetty plugin</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_check_the_archetype_source_code_into_git">Check the archetype source code into git</h3>
-<div class="paragraph">
-<p>Back in the <em>original session</em> (at <code>example/application/simpleapp</code>), we are ready to check the archetype source code into git:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git rm -rf ../../archetype/$ISISCPN
-rm -rf ../../archetype/$ISISCPN</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>In either case make sure that the <code>archetype/$ISISCPN</code> directory was fully removed, otherwise the next command will not copy the regenerated source into the correct location.</p>
-</div>
-<div class="paragraph">
-<p>Then, copy over the generated source of the archetype:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mv target/generated-sources/archetype ../../archetype/$ISISCPN
-git add ../../archetype/$ISISCPN</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, confirm that the <code>-SNAPSHOT</code> version of the archetype is correct:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">vi ../../archetype/$ISISCPN/pom.xml</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If this a new archetype, then add a reference to the archetype to the root <code>pom.xml</code>, eg:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;modules&gt;</span>
-    ...
-    <span class="tag">&lt;module&gt;</span>example/archetype/newapp<span class="tag">&lt;/module&gt;</span>
-    ...
-<span class="tag">&lt;/modules&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Finally, commit the changes:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git commit -am &quot;ISIS-nnn: updating $ISISCPN archetype&quot;</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_create_the_archetype_scripted">Create the archetype (scripted)</h3>
-<div class="admonitionblock important">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-important" title="Important"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Using the script does not generate an app from the archetype to test it works.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Make sure you are in the correct directory and environment variables are correct.</p>
-</div>
-<div class="paragraph">
-<p>To recreate the <strong>simpleapp</strong> archetype:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd example/application/simpleapp
-
-env | grep ISIS | sort</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If the environment variables look wrong, use the commands at the top of this page to setup.
-The script will also double check that all required environment variables are set.</p>
-</div>
-<div class="paragraph">
-<p>Then, run the script:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">sh ../../../scripts/recreate-archetype.sh ISIS-nnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The script automatically commits changes; if you wish use <code>git log</code> and
-<code>git diff</code> (or a tool such as SourceTree) to review changes made.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_releasing_the_archetype">Releasing the Archetype</h3>
-<div class="paragraph">
-<p>{note
-Releasing the archetype is performed from the <strong>example/archetype</strong> directory,
-NOT the <em>example/application</em> directory.
-}</p>
-</div>
-<div class="paragraph">
-<p>The procedure for releasing the archetype is the same as for any other releasable module.</p>
-</div>
-<div class="paragraph">
-<p>First, confirm environment variables set correctly:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">env | grep ISIS | sort</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then switch the correct directory and release:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>cd ../../../example/archetype/$ISISCPN
-
-rm -rf $ISISTMP/checkout
-
-mvn release:prepare -P apache-release \
-                -DreleaseVersion=$ISISREL \
-                -DdevelopmentVersion=$ISISDEV \
-                -Dtag=$ISISART-$ISISREL
-mvn release:perform -P apache-release \
-                -DworkingDirectory=$ISISTMP/checkout</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, log onto <a href="http://repository.apache.org">repository.apache.org</a> and close the staging repo.</p>
-</div>
-<div class="paragraph">
-<p>Then push branch:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push -u origin prepare/$ISISART-$ISISREL</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>and push tag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git push origin refs/tags/$ISISART-$ISISREL-$ISISRC:refs/tags/$ISISART-$ISISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>See the <a href="release-process.html">release process</a> for full details.</p>
-</div>
-</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="#_setup_environment_variables">Setup environment variables</a></li>
-<li><a href="#_check_the_example_app">Check the example app</a>
-<ul class="sectlevel2">
-<li><a href="#_create_the_archetype_manual">Create the archetype (manual)</a></li>
-<li><a href="#_test_the_archetype">Test the archetype</a></li>
-<li><a href="#_check_the_archetype_source_code_into_git">Check the archetype source code into git</a></li>
-<li><a href="#_create_the_archetype_scripted">Create the archetype (scripted)</a></li>
-<li><a href="#_releasing_the_archetype">Releasing the Archetype</a></li>
-</ul>
-</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" === "Recreating an 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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/release-checklist.html
----------------------------------------------------------------------
diff --git a/content/release-checklist.html b/content/release-checklist.html
deleted file mode 100644
index ba4a5cb..0000000
--- a/content/release-checklist.html
+++ /dev/null
@@ -1,858 +0,0 @@
-<!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>Release Checklist</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 class="paragraph">
-<p><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>This page contains a release checklist to support the <a href="./release-process.html">full release process</a> and <a href="./release-process-one-pager.html">one-pager</a>.</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 1. Prepare</caption>
-<colgroup>
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-<col style="width: 10%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Artifact</th>
-<th class="tableblock halign-left valign-top">Env?</th>
-<th class="tableblock halign-left valign-top">Update parent POM ver.</th>
-<th class="tableblock halign-left valign-top">Newer plugin versions</th>
-<th class="tableblock halign-left valign-top">Newer deps</th>
-<th class="tableblock halign-left valign-top">Formatting</th>
-<th class="tableblock halign-left valign-top">License headers (RAT)</th>
-<th class="tableblock halign-left valign-top">License check</th>
-<th class="tableblock halign-left valign-top">Recreate archetype</th>
-<th class="tableblock halign-left valign-top">Commit changes</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">isis</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">n/a</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">simpleapp-archetype</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-</tr>
-</tbody>
-</table>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 2. Release</caption>
-<colgroup>
-<col style="width: 14%;">
-<col style="width: 14%;">
-<col style="width: 14%;">
-<col style="width: 14%;">
-<col style="width: 14%;">
-<col style="width: 14%;">
-<col style="width: 14%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Artifact</th>
-<th class="tableblock halign-left valign-top">prepare dryrun</th>
-<th class="tableblock halign-left valign-top">prepare</th>
-<th class="tableblock halign-left valign-top">confirm</th>
-<th class="tableblock halign-left valign-top">perform</th>
-<th class="tableblock halign-left valign-top">stage (nexus)</th>
-<th class="tableblock halign-left valign-top">git push</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">isis</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">simpleapp-archetype</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;</p></td>
-</tr>
-</tbody>
-</table>
-        </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">
-                
-            </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" === "Release Checklist") {
-        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>


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

Posted by da...@apache.org.
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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/git-cookbook.html
----------------------------------------------------------------------
diff --git a/content/git-cookbook.html b/content/git-cookbook.html
deleted file mode 100644
index ca8fc2d..0000000
--- a/content/git-cookbook.html
+++ /dev/null
@@ -1,1075 +0,0 @@
-<!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>Git Cookbook</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>This page describes the commands often used while working with git.  In addition to these basic commands, please make sure you have read:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="./building-isis.html">building Apache Isis</a></p>
-</li>
-<li>
-<p><a href="./git-policy.html">Git policy</a></p>
-</li>
-<li>
-<p><a href="./contributing.html">Contributing</a></p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_modifying_existing_files">Modifying existing files</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To modify existing files:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git add filename
-git commit -m &quot;ISIS-nnn: yada yada&quot;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The <code>git add</code> command adds the changes to the file(s) to the git index (aka staging area).  If you were to make subsequent changes to the file these would not be committed.</p>
-</div>
-<div class="paragraph">
-<p>The <code>git commit</code> takes all the staged changes and commits them locally.  Note that these changes are not shared public with Apache Isis' central git repo.</p>
-</div>
-<div class="paragraph">
-<p>You can combine these two commands using <code>-am</code> flag to git commit:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git commit -am &quot;ISIS-nnn: yada yada&quot;</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_adding_new_files">Adding new files</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To add a new file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git add .
-git commit -m &quot;ISIS-nnn: yada yada&quot;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Note that this sequence of commands is identical to modifying an existing file.  However, it isn&#8217;t possible to combine the two steps using <code>git commit -am</code>; the <code>git add</code> is always needed when adding new files to the repo.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_deleting_files">Deleting files</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To delete a file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git rm filename
-git commit -m &quot;ISIS-nnn: yada yada&quot;</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_renaming_or_moving_files">Renaming or moving files</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To rename or move a file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git mv &lt;i&gt;filename&lt;/i&gt; &lt;i&gt;newfilename&lt;/i&gt;
-git commit -m &quot;ISIS-nnn: yada yada&quot;</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_common_workflows">Common Workflows</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The <a href="./contributing.html">contributing</a> page describes the workflow for non-committers.  The <a href="./git-policy.html">Git policy</a> page describes a workflow for Apache Isis <strong>committers</strong>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_backing_up_a_local_branch">Backing up a local branch</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If committing to a local branch, the changes are still just that: local, and run risk of a disk failure or other disaster.</p>
-</div>
-<div class="paragraph">
-<p>To create a new, similarly named branch on the central repo, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push -u origin &lt;i&gt;branchname&lt;/i&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Using <code>gitk --all</code> will show you this new branch, named <strong>origin/branchname</strong>.</p>
-</div>
-<div class="paragraph">
-<p>Thereafter, you can push subsequent commits using simply:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Doing this also allows others to collaborate on this branch, just as they would for <code>master</code>.</p>
-</div>
-<div class="paragraph">
-<p>When, eventually, you have reintegrated this branch, you can delete the remote branch using:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin --delete &lt;i&gt;branchname&lt;/i&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>For more detail, see these blogs/posts <a href="http://www.mariopareja.com/blog/archive/2010/01/11/how-to-push-a-new-local-branch-to-a-remote.aspx">here</a> and <a href="http://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally-and-in-github">here</a>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_quick_change_stashing_changes">Quick change: stashing changes</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If you are working on something but are not ready to commit, then use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git stash</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If you use <code>gitk --all</code> then you&#8217;ll see new commits are made that hold the current state of your working directory and staging area.</p>
-</div>
-<div class="paragraph">
-<p>You can then, for example, pull down the latest changes using <code>git pull --rebase</code> (see above).</p>
-</div>
-<div class="paragraph">
-<p>To reapply your stash, then use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git stash pop</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Note that stashing works even if switching branches</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_ignoring_files">Ignoring files</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Put file patterns into <code>.gitignore</code>.  There is one at the root of the git repo, but they can additionally appear in subdirectories (the results are cumulative).</p>
-</div>
-<div class="paragraph">
-<p>See also:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="https://help.github.com/articles/ignoring-files">github&#8217;s help page</a></p>
-</li>
-<li>
-<p><a href="http://www.kernel.org/pub/software/scm/git/docs/gitignore.html">man page</a></p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_more_advanced_use_cases">More advanced use cases</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_if_accidentally_push_to_remote">If accidentally push to remote</h3>
-<div class="paragraph">
-<p>Suppose you committed to <code>master</code>, and then pushed the change, and then decided that you didn&#8217;t intend to do that:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">C1  -  C2  -  C3  -  C4  -  C5  -  C6  -  C7
-                                          ^
-                                          master
-                                          ^
-                                          origin/master</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To go back to an earlier commit, first we wind back the local <code>master</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git reset --hard C5</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>C5</code> is the long sha-id for that commit.</p>
-</div>
-<div class="paragraph">
-<p>This gets us to:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">C1  -  C2  -  C3  -  C4  -  C5  -  C6  -  C7
-                            ^
-                            master
-                                          ^
-                                          origin/master</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, do a force push:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin master --force</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If this doesn&#8217;t work, it may be that the remote repo has disabled this feature.  There are other hacks to get around this, see for example <a href="http://stackoverflow.com/questions/1377845/git-reset-hard-and-a-remote-repository">here</a>.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_if_you_ve_accidentally_worked_on_code_master_code_branch">If you&#8217;ve accidentally worked on <code>master</code> branch</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If at any time the <code>git pull</code> from your upstream fails, it most likely means that you must have made commits on the <code>master</code> branch.  You can use <code>gitk --all</code> to confirm; at some point in time both <code>master</code> and <code>origin\master</code> will have a common ancestor.</p>
-</div>
-<div class="paragraph">
-<p>You can retrospectively create a topic branch for the work you&#8217;ve accidentally done on <code>master</code>.</p>
-</div>
-<div class="paragraph">
-<p>First, create a branch for your current commit:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git branch &lt;i&gt;newbranch&lt;/i&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, make sure you have no outstanding edits.  If you do, you should commit them or stash them:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git stash</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Finally, locate the shaId of the commit you want to roll back to (easily obtained in <code>gitk -all</code>), and wind <code>master</code> branch back to that commit:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout master
-git reset --hard &lt;i&gt;shaId&lt;/i&gt;      # move master branch shaId of common ancestor</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_if_you_ve_forgotten_to_prefix_your_commits_but_not_pushed">If you&#8217;ve forgotten to prefix your commits (but not pushed)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>One of our committers, Alexander Krasnukhin, has put together some git scripts to help his workflow.  Using one of these, <code>git prefix</code>, you can just commit with proper message without bothering about prefix and add prefix only in the end <strong>before</strong> the final push.</p>
-</div>
-<div class="paragraph">
-<p>For example, to prefix all not yet prefixed commits <code>master..isis/666</code> with <code>ISIS-666</code> prefix, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git prefix ISIS-666 master..isis/666</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>You can grab this utility, and others, from <a href="https://github.com/themalkolm/git-boots">this repo</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="#_modifying_existing_files">Modifying existing files</a></li>
-<li><a href="#_adding_new_files">Adding new files</a></li>
-<li><a href="#_deleting_files">Deleting files</a></li>
-<li><a href="#_renaming_or_moving_files">Renaming or moving files</a></li>
-<li><a href="#_common_workflows">Common Workflows</a></li>
-<li><a href="#_backing_up_a_local_branch">Backing up a local branch</a></li>
-<li><a href="#_quick_change_stashing_changes">Quick change: stashing changes</a></li>
-<li><a href="#_ignoring_files">Ignoring files</a></li>
-<li><a href="#_more_advanced_use_cases">More advanced use cases</a>
-<ul class="sectlevel2">
-<li><a href="#_if_accidentally_push_to_remote">If accidentally push to remote</a></li>
-</ul>
-</li>
-<li><a href="#_if_you_ve_accidentally_worked_on_code_master_code_branch">If you&#8217;ve accidentally worked on <code>master</code> branch</a></li>
-<li><a href="#_if_you_ve_forgotten_to_prefix_your_commits_but_not_pushed">If you&#8217;ve forgotten to prefix your commits (but not pushed)</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" === "Git Cookbook") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/git-policy.html
----------------------------------------------------------------------
diff --git a/content/git-policy.html b/content/git-policy.html
deleted file mode 100644
index 146087f..0000000
--- a/content/git-policy.html
+++ /dev/null
@@ -1,886 +0,0 @@
-<!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>Git Policy</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>These notes recommend how contributors should work with git. To understand these notes, the only real concepts that you need to grok are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>git commits form an acyclic graph, with each commit pointing to its parent commit (or commit<strong>s</strong>, if a merge)</p>
-</li>
-<li>
-<p>a branch is merely a pointer to one of these commits; git calls the main branch <code>master</code></p>
-</li>
-<li>
-<p>git commits happen in two steps: first they are added to the index (also called the staging area), then they are committed.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>For more background reading, see:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="http://git-scm.com/book">Pro Git</a> book (free in electronic form)</p>
-</li>
-<li>
-<p><a href="https://github.s3.amazonaws.com/media/book.pdf">Git community book</a></p>
-</li>
-<li>
-<p><a href="http://git-scm.com/2011/07/11/reset.html">git reset demystified</a> - differentiating the working directory vs index/staging area</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>And, of course, there is loads of good advice on <a href="http://stackoverflow.com/questions/tagged/git">stackoverflow.com</a></p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_workflow">Workflow</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>There are many ways of using Git, but the Apache Isis committers have adopted the following workflow:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>create a topic branch for a feature<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout -b ISIS-999</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>periodically, push the branch to origin (for safekeeping):<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin ISIS-999</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p><code>rebase</code> the topic branch periodically on master.<br></p>
-<div class="paragraph">
-<p>How often you do this will depend on whether you are collaborating with others on the feature.  You need to ensure that your co-worker has no outstanding work before you do this; otherwise it&#8217;ll create merge conflict hell for them:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout master
-git pull
-git checkout ISIS-999
-git rebase master
-git push origin ISIS-999 --force</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>when feature is complete, rebase once more (as above), then switch to master and perform a <code>merge --no-ff</code>:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout master
-git merge --no-ff ISIS-999</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>finally, remove the branch<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git branch -d ISIS-999
-git push origin --delete ISIS-999</code></pre>
-</div>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>This way of working gives us the full history on the branch as to what the thought processes were for the feature, but only a single commit on to <code>master</code> to see the ultimate impact of the changes (acting a bit like a summary).</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_commit_message">Commit message</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The minimum we expect in a commit messages is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">ISIS-nnn: brief summary here
-
-- optionally, longer details
-- should be written here
-- in bullet points</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>ISIS-nnn</code> is a ticket raised in our <a href="https://issues.apache.org/jira/browse/ISIS">JIRA issue tracker</a>.</p>
-</div>
-<div class="paragraph">
-<p>For non-committers we typically expect more detail again; see the <a href="contributing.html">contributing</a> page for the longer format recommended for contributors to use.</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="#_workflow">Workflow</a></li>
-<li><a href="#_commit_message">Commit message</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" === "Git Policy") {
-        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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/guides/ug.html
----------------------------------------------------------------------
diff --git a/content/guides/ug.html b/content/guides/ug.html
index 4ddf9de..f440475 100644
--- a/content/guides/ug.html
+++ b/content/guides/ug.html
@@ -482,7 +482,7 @@ table.CodeRay td.code>pre{padding:0}
 
         <div id="doc-content">
           <div class="sect1">
-<h2 id="_users_guide">1. Users' Guide</h2>
+<h2 id="_ug">1. Users' Guide</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This users' guide introduces the <a href="#_ug_core-concepts">core concepts</a> and ideas behind Apache Isis, tells you how to <a href="#_ug_getting-started">get started</a> with a Maven archetype, and provides <a href="#_ug_how-tos">how-to</a>s and <a href="#_ug_more-advanced">more advanced</a> guidance on writing maintainable larger applications.</p>
@@ -494,7 +494,7 @@ table.CodeRay td.code>pre{padding:0}
 <p>Later chapters discuss essential topics such as <a href="#_ug_testing">testing</a> and how to <a href="#_ug_deployment">deploy</a> your app, and discuss other ways in which you can <a href="#_ug_extending">extend</a> or adapt the framework itself to your particular needs.</p>
 </div>
 <div class="paragraph">
-<p>The users' guide is <em>not</em> intended as a reference manual; for that see the <a href="rg.html#">Reference Guide</a>.  The users' 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>The users' guide is <em>not</em> intended as a reference manual; for that see the <strong><a href="rg.html#<em>rg">Reference Guide</a></strong>.  The users' guide also does _not</em> explain how to setup your development environment; for that see the <strong><a href="cg.adoc#_cg">Contributors' Guide</a></strong>.</p>
 </div>
 </div>
 </div>
@@ -1719,7 +1719,7 @@ So, if you have used Apache Isis for prototyping (discussed above), then note th
 </ul>
 </div>
 <div class="paragraph">
-<p>You&#8217;ll probably also want to use an IDE; the Apache Isis committers use either IntelliJ or Eclipse; in the <a href="dg.adoc">Developers' Guide</a> we have detailed setup instructions for using these two IDEs.  If you&#8217;re a NetBeans user you should have no problems as it too has strong support for Maven.</p>
+<p>You&#8217;ll probably also want to use an IDE; the Apache Isis committers use either IntelliJ or Eclipse; in the <a href="cg.html#_cg_ide">Contributors' Guide</a> we have detailed setup instructions for using these two IDEs.  If you&#8217;re a NetBeans user you should have no problems as it too has strong support for Maven.</p>
 </div>
 <div class="paragraph">
 <p>When building and running within an IDE, you&#8217;ll also need to configure the Datanucleus enhancer.  This is implemented as a Maven plugin, so in the case of IntelliJ, it&#8217;s easy enough to run the enhancer as required. It should be just as straightforward for NetBeans too.</p>
@@ -1845,7 +1845,7 @@ mvn clean install</code></pre>
 <div class="sect3">
 <h4 id="_running_the_app">3.2.3. Running the App</h4>
 <div class="paragraph">
-<p>The <code>simpleapp</code> archetype generates a single WAR file, configured to run both the <a href="#_ug_wicket-viewer">Wicket viewer</a> and the <a href="#_ug_restfulobjects-viewer">Restful Objects viewer</a>.  The archetype also configures the [JDO Objectstore](../../components/objectstores/jdo/about.html) to use an in-memory HSQLDB connection.</p>
+<p>The <code>simpleapp</code> archetype generates a single WAR file, configured to run both the <a href="#_ug_wicket-viewer">Wicket viewer</a> and the <a href="#_ug_restfulobjects-viewer">Restful Objects viewer</a>.  The archetype also configures the DataNucleus/JDO 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>
@@ -1884,7 +1884,7 @@ mvn jetty:run</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>If you use <code>mvn jetty:run</code>, then the context path changes; check the console output (eg link:[<a href="http://localhost:8080/myapp-webapp" class="bare">http://localhost:8080/myapp-webapp</a>] [<a href="http://localhost:8080/myapp-webapp" class="bare">http://localhost:8080/myapp-webapp</a>]).</p>
+<p>If you use <code>mvn jetty:run</code>, then the context path changes; check the console output (eg link:http://localhost:8080/myapp-webapp [<a href="http://localhost:8080/myapp-webapp" class="bare">http://localhost:8080/myapp-webapp</a>]).</p>
 </div>
 <div class="paragraph">
 <p>You can also provide a system property to change the port:</p>
@@ -1905,7 +1905,7 @@ mvn jetty:run -D jetty.port=9090</code></pre>
 <div class="sect4">
 <h5 id="_from_within_the_ide">From within the IDE</h5>
 <div class="paragraph">
-<p>Most of the time, though, you&#8217;ll probably want to run the app from within your IDE.  The mechanics of doing this will vary by IDE; see the <a href="dg.adoc">Developers' Guide</a> for details of setting up Eclipse or IntelliJ IDEA.  Basically, though, it amounts to running <code>org.apache.isis.WebServer</code>, and ensuring that the <a href="#_ug_getting-started_datanucleus-enhancer">DataNucleus enhancer</a> has properly processed all domain entities.</p>
+<p>Most of the time, though, you&#8217;ll probably want to run the app from within your IDE.  The mechanics of doing this will vary by IDE; see the <a href="cg.html#_cg_ide">Contributors' Guide</a> for details of setting up Eclipse or IntelliJ IDEA.  Basically, though, it amounts to running <code>org.apache.isis.WebServer</code>, and ensuring that the <a href="#_ug_getting-started_datanucleus-enhancer">DataNucleus enhancer</a> has properly processed all domain entities.</p>
 </div>
 <div class="paragraph">
 <p>Here&#8217;s what the setup looks like in IntelliJ IDEA:</p>
@@ -2109,10 +2109,10 @@ script to be run.</p>
 <div class="sect3">
 <h4 id="_modifying_the_app">3.2.6. Modifying the App</h4>
 <div class="paragraph">
-<p>Once you are familiar with the generated app, you&#8217;ll want to start modifying it.  There is plenty of guidance on this site; check out the 'programming model how-tos' section on the main [documentation](../../documentation.html) page first).</p>
+<p>Once you are familiar with the generated app, you&#8217;ll want to start modifying it.  There is plenty of guidance on this site; check out the 'programming model how-tos' section on the main <a href="../documentation.html">documentation</a> page first).</p>
 </div>
 <div class="paragraph">
-<p>If you use Eclipse or IntelliJ IDEA, do also install the [Eclipse templates](../resources/editor-templates.html); these will help you follow the Apache Isis naming conventions.</p>
+<p>If you use Eclipse or IntelliJ IDEA, do also install the <a href="cg.html#_cg_ide-templates">IDE templates</a>; these will help you follow the Apache Isis naming conventions.</p>
 </div>
 </div>
 <div class="sect3">
@@ -2120,18 +2120,42 @@ script to be run.</p>
 <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">
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</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"><code>myapp</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The parent (aggregator) module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>myapp-dom</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">The domain object model, consisting of <code>SimpleObject</code> and <code>SimpleObjects</code> (repository) domain service.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>myapp-fixture</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Domain object fixtures used for initializing the system when being demo&#8217;ed or for unit testing.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>myapp-integtests</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">End-to-end <a href="#_ug_testing_integ-test-support">integration tests</a> that exercise from the UI through to the database</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>myapp-webapp</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Run as a webapp (from <code>web.xml</code>) hosting the <a href="#_ug_wicket-viewer">Wicket viewer</a> and/or the <a href="#_ug_restfulobjects-viewer">RestfulObjects viewer</a></p></td>
+</tr>
+</tbody>
+</table>
 <div class="paragraph">
-<p>&lt;table class="table table-striped table-bordered table-condensed"&gt;
-&lt;tr&gt;&lt;th&gt;Module&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;myapp&lt;/td&gt;&lt;td&gt;The parent (aggregator) module&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;myapp-dom&lt;/td&gt;&lt;td&gt;The domain object model, consisting of &lt;tt&gt;SimpleObject&lt;/tt&gt; and &lt;tt&gt;SimpleObjects&lt;/tt&gt; (repository) domain service.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;myapp-fixture&lt;/td&gt;&lt;td&gt;Domain object fixtures used for initializing the system when being demo&#8217;ed or for unit testing.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;myapp-integtests&lt;/td&gt;&lt;td&gt;End-to-end &lt;a href="../../core/integtestsupport.html"&gt;integration tests&lt;/a&gt;, that exercise from the UI through to the database&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;myapp-webapp&lt;/td&gt;&lt;td&gt;Run as a webapp (from &lt;tt&gt;web.xml&lt;/tt&gt;) using either the Wicket viewer or the Restful Objects viewer&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;</p>
-</div>
-<div class="paragraph">
-<p>If you run into issues, please don&#8217;t hesitate to ask for help on the [users mailing list](../../support.html).</p>
+<p>If you run into issues, please don&#8217;t hesitate to ask for help on the <a href="http://isis.apache.org/help.html">users mailing list</a>.</p>
 </div>
 </div>
 </div>
@@ -2269,7 +2293,7 @@ script to be run.</p>
 <p>If running on Windows, then there&#8217;s a good chance you&#8217;ll hit the <a href="http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath">maximum path length limit</a>.   In this case the <code>persistence.xml</code> file is mandatory rather than optional.</p>
 </div>
 <div class="paragraph">
-<p>This file is also required if you are using developing in Eclipse and relying on the DataNucleus plugin for Eclipse rather than the DataNucleus plugin for Maven.  More information can be found <a href="dg.adoc#_dg_eclipse">here</a>.</p>
+<p>This file is also required if you are using developing in Eclipse and relying on the DataNucleus plugin for Eclipse rather than the DataNucleus plugin for Maven.  More information can be found <a href="cg.html#_cg_ide_eclipse">here</a>.</p>
 </div>
 </td>
 </tr>
@@ -2280,88 +2304,27 @@ script to be run.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_ug_tutorials">4. Tutorials</h2>
+<h2 id="_ug_how-tos">4. How tos</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>This chapter contains a couple of tutorials for you to follow.</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>the "petclinic" 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>the "stop scaffolding, start coding" 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>
+<p>This chapter provides instructions on how to go about actually developing Apache Isis domain applications.</p>
 </div>
 <div class="sect2">
-<h3 id="_ug_tutorials_pet-clinic">4.1. Pet Clinic</h3>
-<div class="paragraph">
-<p>This is a step-by-step tutorial to build up a simple "petclinic" application, starting from the <a href="#_ug_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
-</div>
-<div class="paragraph">
-<p>It consists of just three domain classes (<a href="http://yuml.me/edit/3db2078c">http://yuml.me/3db2078c</a>):</p>
-</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>
+<h3 id="_ug_how-tos_class-structure">4.1. Class Structure</h3>
 <div class="paragraph">
-<p>This supports the following use cases:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>register a Pet</p>
-</li>
-<li>
-<p>register an Owner</p>
-</li>
-<li>
-<p>maintain a Pet&#8217;s details</p>
-</li>
-<li>
-<p>check in a Pet to visit the clinic</p>
-</li>
-<li>
-<p>enter a diagnosis</p>
-</li>
-</ul>
+<p>Apache Isis works by building a metamodel of the domain objects: entities, view models and services.  The class members of both entities and view models represent both state&#8201;&#8212;&#8201;(single-valued) properties and (multi-valued) collections&#8201;&#8212;&#8201;and behaviour&#8201;&#8212;&#8201;actions.  The class members of domain services is simpler: just behaviour, ie actions.</p>
 </div>
 <div class="paragraph">
-<p>check out a Pet to visit the clinic</p>
+<p>In the automatically generated UI a property is rendered as a field.  This can be either of a value type (a string, number, date, boolean etc) or can be a reference to another entity.  A collection is generally rendered as a table.</p>
 </div>
 <div class="paragraph">
-<p>Either follow along or check out the tags from the corresponding <a href="https://github.com/danhaywood/isis-app-petclinic">github repo</a>.</p>
+<p>In order for Apache Isis to build its metamodel the domain objects must follow some conventions: what we call the <em>Apache Isis Programming Model</em>.  This is just an extension of the pojo / JavaBean standard of yesteryear: properties and collections are getters/setters, while actions are simply any remaining <code>public</code> methods.</p>
 </div>
-<div class="sect3">
-<h4 id="_prerequisites_2">4.1.1. Prerequisites</h4>
 <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>
+<p>Additional metamodel semantics are inferred both imperatively from <em>supporting methods</em> and declaratively from annotations.</p>
 </div>
-<div class="sect3">
-<h4 id="_run_the_archetype">4.1.2. Run the archetype</h4>
 <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>
+<p>In this section we discuss the mechanics of writing domain objects that comply with Apache Isis' programming model.</p>
 </div>
 <div class="admonitionblock tip">
 <table>
@@ -2370,15 +2333,18 @@ script to be run.</p>
 <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 class="paragraph">
+<p>In fact, the Apache Isis programming model is extensible; you can teach Apache Isis new programming conventions and you can remove existing ones; ultimately they amount to syntax.   The only real fundamental that can&#8217;t be changed is the notion that objects consist of properties, collections and actions.</p>
 </div>
+<div class="paragraph">
+<p>You can learn more about extending Apache Isis programming model <a href="#_ug_extending_programming-model">here</a>.</p>
 </div>
 </td>
 </tr>
 </table>
 </div>
+<div class="sect3">
+<h4 id="_ug_how-tos_class-structure_class-definition">4.1.1. Class Definition</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -2386,505 +2352,428 @@ script to be run.</p>
 <i class="fa icon-note" title="Note"></i>
 </td>
 <td class="content">
-<div class="paragraph">
-<p>This tutorial was developed against Apache Isis 1.8.0-SNAPSHOT.  Since then 1.8.0 has been released, so simply replace "1.8.0-SNAPSHOT" for "1.8.0" wherever it appears in the <code>pom.xml</code> files.</p>
-</div>
+TODO
 </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  \
-    -D archetypeGroupId=org.apache.isis.archetype \
-    -D archetypeArtifactId=simpleapp-archetype \
-    -D archetypeVersion=1.8.0 \
-    -D groupId=com.mycompany \
-    -D artifactId=petclinic \
-    -D version=1.0-SNAPSHOT \
-    -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
-    -B</code></pre>
+<p>Classes are defined both to Isis and (if an entity) also to JDO/DataNucleus.</p>
 </div>
+<div class="paragraph">
+<p>We use Java packages as a way to group related domain objects together; the package name forms a namespace. We can then reason about all the classes in that package/namespace as a single unit.</p>
 </div>
 <div class="paragraph">
-<p>This will generate the app in a <code>petclinic</code> directory. Move the contents back:</p>
+<p>In the same way that Java packages act as a namespace for domain objects, it&#8217;s good practice to map domain entities to their own (database) schemas.</p>
 </div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mv petclinic/* .
-rmdir petclinic</code></pre>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>For more on this topic, see the topic discussing modules and <a href="#_ug_more-advanced_decoupling">decoupling</a>.</p>
 </div>
+</td>
+</tr>
+</table>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_build_and_run">4.1.3. Build and run</h4>
-<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>
+<h4 id="_ug_how-tos_class-structure_properties">4.1.2. Property</h4>
+<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="sect4">
+<h5 id="_value_vs_reference_types">Value vs Reference Types</h5>
+<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="paragraph">
-<p>Once that&#8217;s built then run using:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn antrun:run -P self-host</code></pre>
-</div>
+<p>The annotations for mapping value types tend to be different for properties vs action parameters, because JDO annotations are only valid on properties.  The table in the <a href="#_ug_how-tos_class-structure_properties-vs-parameters">Properties vs Parameters</a> section provides a handy reference of each.</p>
 </div>
-<div class="paragraph">
-<p>A splash screen should appear offering to start up the app. Go ahead and start; the web browser should be opened at <a href="http://localhost:8080">http://localhost:8080</a></p>
 </div>
+<div class="sect4">
+<h5 id="_optional_properties">Optional Properties</h5>
 <div class="paragraph">
-<p>Alternatively, you can run using the mvn-jetty-plugin:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn jetty:run</code></pre>
-</div>
+<p>JDO/DataNucleus' default is that a property is assumed to be mandatory if it is a primitive type (eg <code>int</code>, <code>boolean</code>), but optional if a reference type (eg <code>String</code>, <code>BigDecimal</code> etc).  To override optionality in JDO/DataNucleus the <code>@Column(allowsNull="&#8230;&#8203;")</code> annotations is used.</p>
 </div>
 <div class="paragraph">
-<p>This will accomplish the same thing, though the webapp is mounted at a slightly different URL</p>
-</div>
+<p>Apache Isis on the other hand assumes that all properties (and action parameters, for that matter) are mandatory, not optional.  These defaults can also be overridden using Apache Isis' own annotations, specifically <code>@Property(optionality=&#8230;&#8203;)</code>.</p>
 </div>
-<div class="sect3">
-<h4 id="_using_the_app_2">4.1.4. Using the app</h4>
 <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>
+<p>These different defaults can lead to incompatibilities between the two frameworks.  To counteract that, Apache Isis also recognizes and honours JDO&#8217;s <code>@Column(allowsNull=&#8230;&#8203;)</code>.</p>
 </div>
 <div class="paragraph">
-<p>The home page should be shown:</p>
+<p>For example, rather than:</p>
 </div>
-<div class="imageblock">
+<div class="listingblock">
 <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>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@javax</span>.jdo.annotations.Column(allowNulls=<span class="string"><span class="delimiter">&quot;</span><span class="content">true</span><span class="delimiter">&quot;</span></span>)
+<span class="directive">private</span> LocalDate date;
+<span class="annotation">@Property</span>(optionality=Optionality.OPTIONAL)
+<span class="directive">public</span> LocalDate getDate() { ... }
+<span class="directive">public</span> <span class="type">void</span> setDate(LocalDate d) { ... }</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>Install the fixtures (example test data) using the <code>Prototyping</code> menu:</p>
+<p>you should instead simply write:</p>
 </div>
-<div class="imageblock">
+<div class="listingblock">
 <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>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">private</span> LocalDate date;
+<span class="annotation">@javax</span>.jdo.annotations.Column(allowNulls=<span class="string"><span class="delimiter">&quot;</span><span class="content">true</span><span class="delimiter">&quot;</span></span>)
+<span class="directive">public</span> LocalDate getDate() { ... }
+<span class="directive">public</span> <span class="type">void</span> setDate(LocalDate d) { ... }</code></pre>
 </div>
 </div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
 <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>
+<p>With JDO/DataNucleus it&#8217;s valid for the <code>@Column</code> annotation to be placed on either the field or the getter.  Apache Isis (currently) only looks for annotations on the getter.  We therefore recommend that you always place <code>@Column</code> on the gettter.</p>
 </div>
+</td>
+</tr>
+</table>
 </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>
+<p>In all cases the framework will search for any incompatibilities in optionality (whether specified explicitly or defaulted implicitly) between Isis' defaults and DataNucleus, and refuse to boot if any are found (fail fast).</p>
 </div>
+<div class="sect5">
+<h6 id="_handling_mandatory_properties_in_subtypes">Handling Mandatory Properties in Subtypes</h6>
 <div class="paragraph">
-<p>Experiment some more, to:</p>
+<p>If you have a hierarchy of classes then you need to decide which inheritance strategy to use.</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>create a new object</p>
+<p>"table per hierarchy", or "rollup" (<code>InheritanceStrategy.SUPERCLASS_TABLE</code>)<br></p>
+<div class="paragraph">
+<p>whereby a single table corresponds to the superclass, and also holds the properties of the subtype (or subtypes) being rolled up</p>
+</div>
+</li>
+<li>
+<p>"table per class" (<code>InheritanceStrategy.NEW_TABLE</code>)<br></p>
+<div class="paragraph">
+<p>whereby is a table for both superclass and subclass, in 1:1 correspondence</p>
+</div>
 </li>
 <li>
-<p>list all objects</p>
+<p>"rolldown" (<code>InheritanceStrategy.SUBCLASS_TABLE</code>)<br></p>
+<div class="paragraph">
+<p>whereby a single table holds the properties of the subtype, and also holds the properties of its supertype</p>
+</div>
 </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>
+<p>In the first "rollup" case, we can have a situation where - logically speaking - the property is mandatory in the subtype - but it must be mapped as nullable in the database because it is n/a for any other subtypes that are rolled up.</p>
 </div>
-<div class="sect3">
-<h4 id="_dev_environment">4.1.5. Dev environment</h4>
 <div class="paragraph">
-<p>Set up <a href="dg.adoc">an IDE</a> and import the project to be able to run and debug the app.</p>
+<p>In this situation we must tell JDO that the column is optional, but to Apache Isis we want to enforce it being mandatory. This can be done using the <code>@Property(optionality=Optionality.MANDATORY)</code> annotation.</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>
+<p>For example:</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>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@javax</span>.jdo.annotations.Inheritance(strategy = InheritanceStrategy.SUPER_TABLE)
+<span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubtype</span> <span class="directive">extends</span> SomeSuperType {
+    <span class="directive">private</span> LocalDate date;
+    <span class="annotation">@javax</span>.jdo.annotations.Column(allowNulls=<span class="string"><span class="delimiter">&quot;</span><span class="content">true</span><span class="delimiter">&quot;</span></span>)
+    <span class="annotation">@Property</span>(optionality=Optionality.MANDATORY)
+    <span class="directive">public</span> LocalDate getDate() { ... }
+    <span class="directive">public</span> <span class="type">void</span> setDate(LocalDate d) { ... }
+}</code></pre>
 </div>
 </div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
 <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>
+<p>The <code>@Property(optionality=&#8230;&#8203;)</code> annotation is equivalent to the older but still supported <code>@Optional</code> annotation and <code>@Mandatory</code> annotations. Its benefit is that it lumps together all Apache Isis' property metadata in a single annotation.  Its downside is that it is rather verbose if the only semantic that needs to be specified&#8201;&#8212;&#8201;as is often the case&#8201;&#8212;&#8201;is optionality.</p>
 </div>
+</td>
+</tr>
+</table>
 </div>
 <div class="paragraph">
-<p>where the "before launch" maven goal (to run the DataNucleus enhancer) is defined as:</p>
+<p>An alternative way to achieve this is to leave the JDO annotation on the field (where it is invisible to Apache Isis), and rely on Isis' default, eg:</p>
 </div>
-<div class="imageblock">
+<div class="listingblock">
 <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>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@javax</span>.jdo.annotations.Inheritance(strategy = InheritanceStrategy.SUPER_TABLE)
+<span class="directive">public</span> <span class="type">class</span> <span class="class">SomeSubtype</span> <span class="directive">extends</span> SomeSuperType {
+    <span class="annotation">@javax</span>.jdo.annotations.Column(allowNulls=<span class="string"><span class="delimiter">&quot;</span><span class="content">true</span><span class="delimiter">&quot;</span></span>)
+    <span class="directive">private</span> LocalDate date;
+    <span class="comment">// mandatory in Apache Isis by default</span>
+    <span class="directive">public</span> LocalDate getDate() { }
+    <span class="directive">public</span> <span class="type">void</span> setDate(LocalDate d) { }
+}</code></pre>
 </div>
 </div>
-<div class="sect3">
-<h4 id="_explore_codebase">4.1.6. Explore codebase</h4>
 <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>
+<p>We recommend the former mapping, though, using <code>@Property(optionality=Optionality.MANDATORY)</code>.</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 class="sect4">
+<h5 id="__code_string_code_s_length"><code>String</code>s (Length)</h5>
+<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>
-</li>
-</ul>
 </div>
+<div class="sect4">
+<h5 id="_ug_how-tos_class-structure_properties_mapping-joda-dates">Mapping JODA Dates</h5>
+<div class="paragraph">
+<p>Isis' JDO objectstore bundles DataNucleus' <a href="http://www.datanucleus.org/documentation/products/plugins.html">built-in support</a> for Joda <code>LocalDate</code> and <code>LocalDateTime</code> datatypes, meaning that entity properties of these types will be persisted as appropriate data types in the database tables.</p>
 </div>
-<div class="sect3">
-<h4 id="_testing">4.1.7. Testing</h4>
 <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>
+<p>It is, however, necessary to annotate your properties with <code>@javax.jdo.annotations.Persistent</code>, otherwise the data won&#8217;t actually be persisted. See the <a href="http://db.apache.org/jdo/field_types.html">JDO docs</a> for more details on this.</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 class="paragraph">
+<p>Moreover, these datatypes are <em>not</em> in the default fetch group, meaning that JDO/DataNucleus will perform an additional <code>SELECT</code> query for each attribute. To avoid this extra query, the annotation should indicate that the property is in the default fetch group.</p>
 </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 class="paragraph">
+<p>For example, the <code>ToDoItem</code> (in the <a href="https://github.com/isisaddons/isis-app-todoapp">todoapp example app</a> (not ASF)) defines the <code>dueBy</code> property as follows:</p>
 </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 class="sect4">
+<h5 id="__code_bigdecimal_code_s_precision"><code>BigDecimal</code>s (Precision)</h5>
+<div class="paragraph">
+<p>Working with <code>java.math.BigDecimal</code> properties takes a little care due to scale/precision issues.</p>
+</div>
+<div class="paragraph">
+<p>For example, suppose we have:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">private</span> <span class="predefined-type">BigDecimal</span> impact;
+<span class="directive">public</span> <span class="predefined-type">BigDecimal</span> getImpact() {
+    <span class="keyword">return</span> impact;
+}
+<span class="directive">public</span> <span class="type">void</span> setImpact(<span class="directive">final</span> <span class="predefined-type">BigDecimal</span> impact) {
+    <span class="local-variable">this</span>.impact = impact;
+}</code></pre>
 </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>
+<p>JDO/DataNucleus creates, at least with HSQL, the table with the field type as NUMERIC(19). No decimal digits are admitted. (Further details <a href="http://hsqldb.org/doc/2.0/guide/sqlgeneral-chapt.html#sgc_numeric_types">here</a>).</p>
 </div>
+<div class="paragraph">
+<p>What this implies is that, when a record is inserted, a log entry similar to this one appears:</p>
 </div>
-<div class="sect3">
-<h4 id="_update_pom_files">4.1.8. Update POM files</h4>
-<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>
+<pre class="CodeRay highlight"><code data-lang="java">INSERT INTO ENTITY(..., IMPACT, ....) VALUES (...., <span class="float">0.5</span>, ....)</code></pre>
 </div>
 </div>
-</td>
-</tr>
-</table>
+<div class="paragraph">
+<p>But when that same record is retrieved, the log will show that a value of "0" is returned, instead of 0.5.</p>
+</div>
+<div class="paragraph">
+<p>The solution is to explicitly add the scale to the field like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@javax</span>.jdo.annotations.Column(scale=<span class="integer">2</span>)
+<span class="directive">private</span> <span class="predefined-type">BigDecimal</span> impact;
+<span class="directive">public</span> <span class="predefined-type">BigDecimal</span> getImpact() {
+    <span class="keyword">return</span> impact;
+}
+<span class="directive">public</span> <span class="type">void</span> setImpact(<span class="directive">final</span> <span class="predefined-type">BigDecimal</span> impact) {
+    <span class="local-variable">this</span>.impact = impact;
+}</code></pre>
+</div>
 </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>
+<p>In addition, you should also set the scale of the <code>BigDecimal</code>, using <code>setScale(scale, roundingMode)</code>.</p>
 </div>
+<div class="paragraph">
+<p>More information can be found <a href="http://www.opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial">here</a> and <a href="http://www.tutorialspoint.com/java/math/bigdecimal_setscale_rm_roundingmode.htm">here</a>.</p>
 </div>
-<div class="sect3">
-<h4 id="_delete_the_bdd_specs">4.1.9. Delete the BDD specs</h4>
-<div class="admonitionblock tip">
+</div>
+<div class="sect4">
+<h5 id="_mapping_blobs_and_clobs">Mapping Blobs and Clobs</h5>
+<div class="paragraph">
+<p>Apache Isis configures JDO/DataNucleus so that the properties of type <code>org.apache.isis.applib.value.Blob</code> and <code>org.apache.isis.applib.value.Clob</code> can also be persisted.</p>
+</div>
+<div class="paragraph">
+<p>As for <a href="#_ug_how-tos_class-structure_properties_mapping-joda-dates">Joda dates</a>, this requires the <code>@javax.jdo.annotations.Persistent</code> annotation. However, whereas for dates one would always expect this value to be retrieved eagerly, for blobs and clobs it is not so clear cut.</p>
+</div>
+<div class="sect5">
+<h6 id="_mapping_blobs">Mapping Blobs</h6>
+<div class="paragraph">
+<p>For example, in the <code>ToDoItem</code> class (of the <a href="https://github.com/isisaddons/isis-app-todoapp/blob/61b8114a8e01dbb3c380b31cf09eaed456407570/dom/src/main/java/todoapp/dom/module/todoitem/ToDoItem.java#L475">todoapp example app</a> (non-ASF) the <code>attachment</code> property is as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><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">LONGVARBINARY</span><span class="delimiter">&quot;</span></span>)
+})
+<span class="directive">private</span> <span class="predefined-type">Blob</span> attachment;
+<span class="annotation">@Property</span>(
+        optionality = Optionality.OPTIONAL
+)
+<span class="directive">public</span> <span class="predefined-type">Blob</span> getAttachment() {
+    <span class="keyword">return</span> attachment;
+}
+<span class="directive">public</span> <span class="type">void</span> setAttachment(<span class="directive">final</span> <span class="predefined-type">Blob</span> attachment) {
+    <span class="local-variable">this</span>.attachment = attachment;
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The three <code>@javax.jdo.annotations.Column</code> annotations are required because the mapping classes that Apache Isis provides (<a href="https://github.com/apache/isis/blob/isis-1.4.0/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java#L59">IsisBlobMapping</a> and <a href="https://github.com/apache/isis/blob/isis-1.4.0/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisClobMapping.java#L59">IsisClobMapping</a>) map to 3 columns. (It is not an error to omit these <code>@Column</code> annotations, but without them the names of the table columns are simply suffixed <code>_0</code>, <code>_1</code>, <code>_2</code> etc.</p>
+</div>
+<div class="paragraph">
+<p>If the <code>Blob</code> is mandatory, then use:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><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>, 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(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">attachment_mimetype</span><span class="delimiter">&quot;</span></span>, 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(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>,
+                                  allowsNull=<span class="string"><span class="delimiter">&quot;</span><span class="content">false</span><span class="delimiter">&quot;</span></span>)
+})
+<span class="directive">private</span> <span class="predefined-type">Blob</span> attachment;
+<span class="annotation">@Property</span>(
+    optionality = Optionality.MANDATORY
+)
+<span class="directive">public</span> <span class="predefined-type">Blob</span> getAttachment() {
+<span class="keyword">return</span> attachment;
+}
+<span class="directive">public</span> <span class="type">void</span> setAttachment(<span class="directive">final</span> <span class="predefined-type">Blob</span> attachment) {
+<span class="local-variable">this</span>.attachment = attachment;
+}</code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
 <table>
 <tr>
 <td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
+<i class="fa icon-note" title="Note"></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 class="paragraph">
+<p>If specifying a <code>sqlType</code> of "LONGVARBINARY" does not work, try instead "BLOB".  There can be differences in behaviour between JDBC drivers.</p>
 </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="sect5">
+<h6 id="_mapping_clobs">Mapping Clobs</h6>
 <div class="paragraph">
-<p>Therefore delete the BDD feature spec and glue in the <code>integtest</code> module:</p>
+<p>Mapping <code>Clob`s works in a very similar way, but the `jdbcType</code> and <code>sqlType</code> attributes will, respectively, be <code>CLOB</code> and <code>LONGVARCHAR</code>:</p>
 </div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>integration/specs/*</code></p>
-</li>
-<li>
-<p><code>integration/glue/*</code></p>
-</li>
-</ul>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><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_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="directive">private</span> <span class="predefined-type">Clob</span> doc;
+<span class="annotation">@Property</span>(
+    optionality = Optionality.OPTIONAL
+)
+<span class="directive">public</span> <span class="predefined-type">Clob</span> getDoc() {
+    <span class="keyword">return</span> doc;
+}
+<span class="directive">public</span> <span class="type">void</span> setDoc(<span class="directive">final</span> <span class="predefined-type">Clob</span> doc) {
+    <span class="local-variable">this</span>.doc = doc;
+}</code></pre>
 </div>
 </div>
-<div class="sect3">
-<h4 id="_rename_artifacts">4.1.10. Rename artifacts</h4>
-<div class="admonitionblock tip">
+<div class="admonitionblock note">
 <table>
 <tr>
 <td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
+<i class="fa icon-note" title="Note"></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 class="paragraph">
+<p>If specifying a <code>sqlType</code> of "LONGVARCHAR" does not work, try instead "CLOB".  There can be differences in behaviour between JDBC drivers.</p>
 </div>
 </td>
 </tr>
 </table>
 </div>
+</div>
+<div class="sect5">
+<h6 id="_mapping_to_varbinary_or_varchar">Mapping to VARBINARY or VARCHAR</h6>
 <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>
+<p>Instead of mapping to a sqlType of <code>LONGVARBINARY</code> (or perhaps <code>BLOB</code>), you might instead decide to map to a <code>VARBINARY</code>.  The difference is whether the binary data is held "on-row" or as a pointer "off-row"; with a <code>VARBINARY</code> the data is held on-row and so you will need to specify a length.</p>
 </div>
 <div class="paragraph">
-<p>See the git commit for more detail, but in outline, the renames required are:</p>
+<p>For example:</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 class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java"><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>, jdbcTypr=<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">VARBINARY</span><span class="delimiter">&quot;</span></span>, length=<span class="integer">2048</span>)</code></pre>
 </div>
-</li>
-</ul>
 </div>
 <div class="paragraph">
-<p>Note that <code>Pet</code> has both both Isis and JDO annotations:</p>
+<p>The same argument applies to <code>LONGVARCHAR</code> (or <code>CLOB</code>); you could instead map to a regular <code>VARCHAR</code>:</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>)
-<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>
-<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>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@javax</span>.jdo.annotations.Column(name = <span class="string"><span class="delimiter">&quot;</span><span class="content">attachment_chars</span><span class="delimiter">&quot;</span></span>, sqlType = <span class="string"><span class="delimiter">&quot;</span><span class="content">VARCHAR</span><span class="delimiter">&quot;</span></span>, length=<span class="integer">2048</span>)</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>where:</p>
+<p>Support and maximum allowed length will vary by database vendor.</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>
+</div>
+<div class="sect3">
+<h4 id="_ug_how-tos_class-structure_collections">4.1.3. Collections</h4>
 <div class="admonitionblock note">
 <table>
 <tr>
@@ -2892,1390 +2781,1128 @@ every time, specify the following system properties:</p>
 <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>
+TODO
 </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>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>)
-<span class="directive">public</span> <span class="type">class</span> <span class="class">Pets</span> {
-    ...
-}</code></pre>
-</div>
+<p>While Apache Isis support collections of references, the framework (currently) does not support collections of values. That is, it isn&#8217;t possible to define a collection of type <code>Set&lt;String&gt;</code>.</p>
 </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>
+<p>Or, actually, you can, because that is a valid mapping supported by JDO/DataNucleus .  However, Apache Isis has no default visualization.</p>
 </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>
+<p>One workaround is to mark the collection as <a href="rg.html#_rg_annotations_manpage-Programmatic"><code>@Programmatic</code></a>.  This ensures that the collection is ignored by Apache Isis.</p>
 </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>
+<p>Another workaround is to wrap each value in a view model, as explained in this <a href="#_ug_more-advanced_tips-n-tricks_simulating-collections-of-values">tip</a>.</p>
 </div>
+</td>
+</tr>
+</table>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_update_package_names">4.1.11. Update package names</h4>
-<div class="admonitionblock tip">
+<h4 id="_ug_how-tos_class-structure_actions">4.1.4. Actions</h4>
+<div class="admonitionblock note">
 <table>
 <tr>
 <td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
+<i class="fa icon-note" title="Note"></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>
+TODO
 </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 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>
+<p>While Apache Isis support actions whose parameters' types are scalar (values such as <code>String</code>, <code>int</code>, or references such as <code>Customer</code>), the framework (currently) does not support parameter types that are collections or maps.</p>
 </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>
+<p>The workaround is to mark the collection as <code>@Programmatic</code>, as described in <a href="#_ug_how-tos_class-structure_ignoring-methods">Ignoring Methods</a>.  This ensures that the collection is ignored by Apache Isis.</p>
 </div>
+</td>
+</tr>
+</table>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_add_code_petspecies_code_enum">4.1.12. Add <code>PetSpecies</code> enum</h4>
-<div class="admonitionblock tip">
+<h4 id="_ug_how-tos_class-structure_action-parameters">4.1.5. Action Parameters</h4>
+<div class="admonitionblock note">
 <table>
 <tr>
 <td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
+<i class="fa icon-note" title="Note"></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>
+TODO
+</td>
+</tr>
+</table>
 </div>
+<div class="sect4">
+<h5 id="__code_string_code_s_length_2"><code>String</code>s (Length)</h5>
+<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="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 class="sect4">
+<h5 id="__code_bigdecimal_code_s_precision_2"><code>BigDecimal</code>s (Precision)</h5>
+<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>
-<div class="paragraph">
-<p>Introduce a new property on <code>Pet</code> of this type:</p>
+<div class="sect4">
+<h5 id="_optional">Optional</h5>
+<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="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="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="sect3">
+<h4 id="_ug_how-tos_class-structure_inject-services">4.1.6. Injecting services</h4>
 <div class="paragraph">
-<p>Update fixtures, unit tests and integration tests.</p>
-</div>
+<p>Apache Isis autowires (automatically injects) domain services into each entity, as well as into the domain services themselves, using either method injection or field injection. The applib <code>DomainObjectContainer</code> is also a service, so can be injected in exactly the same manner.</p>
 </div>
-<div class="sect3">
-<h4 id="_icon_to_reflect_pet_species">4.1.13. Icon to reflect pet species</h4>
-<div class="admonitionblock tip">
+<div class="admonitionblock note">
 <table>
 <tr>
 <td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
+<i class="fa icon-note" title="Note"></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 class="paragraph">
+<p>Isis currently does <em>not</em> support qualified injection of services; the domain service of each type must be distinct from any other.</p>
 </div>
+<div class="paragraph">
+<p>If you find a requirement to inject two instances of type <code>SomeService</code>, say, then the work-around is to create trivial subclasses <code>SomeServiceA</code> and <code>SomeServiceB</code> and inject these instead.</p>
 </div>
 </td>
 </tr>
 </table>
 </div>
+<div class="sect4">
+<h5 id="_field_injection">Field Injection</h5>
 <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>
+<p>Field injection is recommended, using the <code>@javax.inject.Inject</code> annotation. For example:</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();
-    }
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Customer</span> {
+    <span class="annotation">@javax</span>.inject.Inject
+    OrderRepository orderRepository;
     ...
 }</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>
+<p>We recommend using default rather than <code>private</code> visibility so that the field can be mocked out within unit tests (placed in the same package as the code under test).</p>
 </div>
 </div>
+<div class="sect4">
+<h5 id="_method_injection">Method Injection</h5>
 <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="sect3">
-<h4 id="_add_pet_s_code_owner_code">4.1.14. Add pet&#8217;s <code>Owner</code></h4>
-<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>
+<p>Isis also supports two forms of method injection.  All that is required to inject a service into a entity/service is to provide an appropriate method or field. The name
+of the method does not matter, only that it is prefixed either <code>set</code> or <code>inject</code>, is
+public, and has a single parameter of the correct type.</p>
 </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>
+<p>For example:</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>)
-})
-<span class="directive">public</span> <span class="type">class</span> <span class="class">Owner</span> ... {
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Customer</span> {
+    <span class="directive">private</span> OrderRepository orderRepository;
+    <span class="directive">public</span> <span class="type">void</span> setOrderRepository(OrderRepository orderRepository) {
+        <span class="local-variable">this</span>.orderRepository = orderRepository;
+    }
     ...
 }</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>and <code>findByName(&#8230;&#8203;)</code> in <code>Owners</code>:</p>
+<p>or alternatively, using 'inject' as the prefix:</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="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">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="keyword">return</span> owners;
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Customer</span> {
+    <span class="directive">private</span> OrderRepository orderRepository;
+    <span class="directive">public</span> <span class="type">void</span> injectOrderRepository(OrderRepository orderRepository) {
+        <span class="local-variable">this</span>.orderRepository = orderRepository;
     }
     ...
 }</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="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>
+<p>Note that the method name can be anything; it doesn&#8217;t need to be related to the type being injected.</p>
 </div>
 </div>
+<div class="sect4">
+<h5 id="_constructor_injection">Constructor injection</h5>
 <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>
+<p>Simply to note that constructor injection is <em>not</em> supported by Apache Isis (and is unlikely to be, because the JDO specification for entities requires a no-arg constructor).</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 class="sect3">
+<h4 id="_ug_how-tos_class-structure_properties-vs-parameters">4.1.7. Properties vs Parameters</h4>
+<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="paragraph">
-<p>which when invoked returns all <code>Owner</code> objects:</p>
+<p>In many cases the value types of properties and of action parameters align. For example, a <code>Customer</code> entity might have a <code>surname</code> property, and there might also be corresponding <code>changeSurname</code>.  Ideally we want the surname property and surname action parameter to use the same value type.</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 class="paragraph">
+<p>Having first-class support for this is a goal of Apache Isis, and it is already possible (by writing some plumbing and glue code using Isis and DataNucleus APIs) to get some way towards this ideal.  However, in the vast majority of cases it is much easier and more practical to simply use standard value types such as <code>java.lang.String</code>.</p>
 </div>
+<div class="paragraph">
+<p>However, the JDO/DataNucleus annotations for specifying semantics such as optionality or maximum length are restricted to only apply to fields and to methods; they cannot be applied to action parameters.  It is therefore necessary to use Apache Isis' equivalent annotations for action parameters.</p>
 </div>
 <div class="paragraph">
-<p>Each <code>Pet</code> also indicates its corresponding <code>Owner</code>:</p>
+<p>The table below summarises the equivalence of some of the most common cases.</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>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 1. Comparing annotations of Properties vs Action Parameters</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 37%;">
+<col style="width: 37%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">value type/semantic</th>
+<th class="tableblock halign-left valign-top">property</th>
+<th class="tableblock halign-left valign-top">action parameter</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">string (length)</p></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">big decimal (precision)</p></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Isis blob</p></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">optional</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>@Column(allowsNull="true")</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>ParameterLayout(optionality=Optionality.OPTIONAL</code>) or <code>@Optional</code></p></td>
+</tr>
+</tbody>
+</table>
 </div>
+<div class="sect3">
+<h4 id="_ug_how-tos_class-structure_ignoring-methods">4.1.8. Ignoring Methods</h4>
+<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="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>
+<p>Sometimes you want to define a <code>public</code> method on a domain object that is not intended to be rendered in Apache Isis' UI.</p>
 </div>
+<div class="paragraph">
+<p>To exclude such methods, use the <a href="rg.html#_rg_annotations_manpage-Programmatic"><code>@Programmatic</code></a> annotation.</p>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_ug_tutorials_stop-scaffolding-start-coding">4.2. Stop scaffolding, start coding</h3>
-<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.</p>
-</div>
+<h3 id="_ug_how-tos_ui-hints">4.2. UI Hints</h3>
 <div class="paragraph">
-<p>There&#8217;s a bit of overlap with the <a href="#_ug_tutorials_pet-clinic">Pet Clinic</a> tutorial initially, but it then sets off on its own.</p>
+<p>The Apache Isis programming model includes several mechanisms for a domain object to provide UI hints.  These range from their title (so an end-user can distinguish one object from another) through to hints that can impact their CSS styling.</p>
 </div>
 <div class="sect3">
-<h4 id="_prerequisites_3">4.2.1. Prerequisites</h4>
+<h4 id="_ug_how-tos_ui-hints_object-titles-and-icons">4.2.1. Object Titles and Icons</h4>
 <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>
+<p>In Apache Isis every object is identified to the user by a title (label) and an icon.  This is shown in several places: as the main heading for an object; as a link text for an object referencing another object, and also in tables representing collections of objects.</p>
 </div>
+<div class="paragraph">
+<p>The icon is often the same for all instances of a particular class, but it&#8217;s also possible for an individual instance to return a custom icon.  This could represent the state of that object (eg a shipped order, say, or overdue library book).</p>
 </div>
-<div class="sect3">
-<h4 id="_run_the_archetype_2">4.2.2. Run the archetype</h4>
 <div class="paragraph">
-<p>Run the simpleapp archetype to build an empty Isis application:</p>
+<p>It is also possible for an object to provide a CSS class hint.  In conjunction with <a href="#_ug_wicket-viewer_customisation_tweaking-css-classes">customized CSS</a> this can be used to apply arbitrary styling; for example each object could be rendered in a page with a different background colour.</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 \
-    -D archetypeRepository=http://repository-estatio.forge.cloudbees.com/snapshot/ \
-    -B</code></pre>
+<div class="sect4">
+<h5 id="_object_title">Object Title</h5>
+<div class="paragraph">
+<p>The object title is a label to identify an object to the end-user.  Generally the object title is a label to identify an object to the end-user.  There is no requirement for it to be absolutely unique, but it should be "unique enough" to distinguish the object from other object&#8217;s likely to be rendered on the same page.</p>
 </div>
+<div class="paragraph">
+<p>The title is always shown with an icon, so there is generally no need for the title to include information about the object&#8217;s type.  For example the title of a customer object shouldn&#8217;t include the literal string "Customer"; it can just have the customer&#8217;s name, reference or some other meaningful business identifier.</p>
 </div>
+<div class="sect5">
+<h6 id="_declarative_style">Declarative style</h6>
+<div class="paragraph">
+<p>The <a href="rg.html#_rg_annotations_manpage-Title"><code>@Title</code></a> annotation can be used build up the title of an object from its constituent parts.</p>
 </div>
-<div class="sect3">
-<h4 id="_build_and_run_2">4.2.3. Build and run</h4>
 <div class="paragraph">
-<p>Start off by building the app from the command line:</p>
+<p>For example:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd myapp
-mvn clean install</code></pre>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">Customer</span> {
+    <span class="annotation">@Title</span>(sequence=<span class="string"><span class="delimiter">&quot;</span><span class="content">1</span><span class="delimiter">&quot;</span></span>, append=<span class="string"><span class="delimiter">&quot;</span><span class="content"> </span><span class="delimiter">&quot;</span></span>)
+    <span class="directive">public</span> <span class="predefined-type">String</span> getFirstName() { ... }
+    <span class="annotation">@Title</span>(sequence=<span class="string"><span class="delimiter">&quot;</span><span class="content">2</span><span class="delimiter">&quot;</span></span>)
+    <span class="directive">public</span> Product getLastName() { ... }
+    ...
+}</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>Once that&#8217;s built then run using:</p>
+<p>might return "Arthur Clarke", while:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn antrun:run -P self-host</code></pre>
+<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">CustomerAlt</span> {
+    <span class="annotation">@Title</span>(sequence=<span class="string"><span class="delimiter">&quot;</span><span class="content">2</span><span class="delimiter">&quot;</span></span>, prepend=<span class="string"><span class="delimiter">&quot;</span><span class="content">, </span><span class="delimiter">&quot;</span></span>)
+    <span class="directive">public</span> <span class="predefined-type">String</span> getFirstName() { ... }
+
+    <span class="annotation">@Title</span>(sequence=<span class="string"><span class="delimiter">&quot;</span><span class="content">1</span><span class="delimiter">&quot;</span></span>)
+    <span class="directive">public</span> Product getLastName() { ... }
+    ...
+}</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>A splash screen should appear offering to star

<TRUNCATED>

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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/help.html
----------------------------------------------------------------------
diff --git a/content/help.html b/content/help.html
index e12fb9a..1b69439 100644
--- a/content/help.html
+++ b/content/help.html
@@ -509,7 +509,7 @@ table.CodeRay td.code>pre{padding:0}
 <p><a href="http://stackoverflow.com/questions/tagged/isis">Stack Overflow</a> (tagged=isis)</p>
 </li>
 <li>
-<p><a href="contributing.html">How to contribute</a></p>
+<p><a href="guides/cg.html#_cg_contributing">How to contribute</a></p>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/building-isis/setting-up-git.png
----------------------------------------------------------------------
diff --git a/content/images/building-isis/setting-up-git.png b/content/images/building-isis/setting-up-git.png
deleted file mode 100644
index 5ed2a79..0000000
Binary files a/content/images/building-isis/setting-up-git.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/contributing/git-workflow-2.png
----------------------------------------------------------------------
diff --git a/content/images/contributing/git-workflow-2.png b/content/images/contributing/git-workflow-2.png
deleted file mode 100644
index 28cc822..0000000
Binary files a/content/images/contributing/git-workflow-2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/contributing/git-workflow.png
----------------------------------------------------------------------
diff --git a/content/images/contributing/git-workflow.png b/content/images/contributing/git-workflow.png
deleted file mode 100644
index dde5573..0000000
Binary files a/content/images/contributing/git-workflow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/contributing/git-workflow.pptx
----------------------------------------------------------------------
diff --git a/content/images/contributing/git-workflow.pptx b/content/images/contributing/git-workflow.pptx
deleted file mode 100644
index e83367b..0000000
Binary files a/content/images/contributing/git-workflow.pptx and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/contributing/github-cloning.png
----------------------------------------------------------------------
diff --git a/content/images/contributing/github-cloning.png b/content/images/contributing/github-cloning.png
deleted file mode 100644
index 19c222d..0000000
Binary files a/content/images/contributing/github-cloning.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/contributing/github-forking.png
----------------------------------------------------------------------
diff --git a/content/images/contributing/github-forking.png b/content/images/contributing/github-forking.png
deleted file mode 100644
index 3f8ff75..0000000
Binary files a/content/images/contributing/github-forking.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/jira-create-release-notes.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/jira-create-release-notes.png b/content/images/release-process/jira-create-release-notes.png
deleted file mode 100644
index 2777532..0000000
Binary files a/content/images/release-process/jira-create-release-notes.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/nexus-release-1.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/nexus-release-1.png b/content/images/release-process/nexus-release-1.png
deleted file mode 100644
index a00a1ba..0000000
Binary files a/content/images/release-process/nexus-release-1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/nexus-staging-0.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/nexus-staging-0.png b/content/images/release-process/nexus-staging-0.png
deleted file mode 100644
index 127d485..0000000
Binary files a/content/images/release-process/nexus-staging-0.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/nexus-staging-1.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/nexus-staging-1.png b/content/images/release-process/nexus-staging-1.png
deleted file mode 100644
index 7266ea9..0000000
Binary files a/content/images/release-process/nexus-staging-1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/nexus-staging-2.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/nexus-staging-2.png b/content/images/release-process/nexus-staging-2.png
deleted file mode 100644
index d4a985a..0000000
Binary files a/content/images/release-process/nexus-staging-2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/nexus-staging-2a.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/nexus-staging-2a.png b/content/images/release-process/nexus-staging-2a.png
deleted file mode 100644
index 894c168..0000000
Binary files a/content/images/release-process/nexus-staging-2a.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/nexus-staging-3.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/nexus-staging-3.png b/content/images/release-process/nexus-staging-3.png
deleted file mode 100644
index 8bc439c..0000000
Binary files a/content/images/release-process/nexus-staging-3.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/images/release-process/nexus-staging-4.png
----------------------------------------------------------------------
diff --git a/content/images/release-process/nexus-staging-4.png b/content/images/release-process/nexus-staging-4.png
deleted file mode 100644
index c3610b5..0000000
Binary files a/content/images/release-process/nexus-staging-4.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/key-generation.html
----------------------------------------------------------------------
diff --git a/content/key-generation.html b/content/key-generation.html
deleted file mode 100644
index e97f4b5..0000000
--- a/content/key-generation.html
+++ /dev/null
@@ -1,1475 +0,0 @@
-<!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>Key Generation</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>In order that a contributor can make a release it is necessary for them to have generated a key and had that key recognized by other members of the Apache Software Foundation.</p>
-</div>
-<div class="paragraph">
-<p>For further background information on this topic, see the <a href="http://www.apache.org/dev/release-signing.html">release signing page</a> and the <a href="http://www.apache.org/dev/openpgp.html#generate-key">openpgp page</a> on the Apache wiki.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_install_and_configure_gpg">Install and Configure gpg</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Download and install GnuPG (gpg), version 1.4.10 or higher.</p>
-</div>
-<div class="paragraph">
-<p>Then, edit <code>~/.gnupg/gpg.conf</code> (on Windows, the file to edit is <code>C:\Users\xxx\AppData\Roaming\gnupg\gpg.conf</code>) so that the default is to generate a strong key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">personal-digest-preferences SHA512
-cert-digest-algo SHA512
-default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_key_generation">Key Generation</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The Apache Software Foundation requires that keys are signed with a key (or subkey) based on RSA 4096 bits. To do this:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --gen-key
-gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-
-Please select what kind of key you want:
-   (1) RSA and RSA (default)
-   (2) DSA and Elgamal
-   (3) DSA (sign only)
-   (4) RSA (sign only)
-Your selection?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify RSA key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Your selection? 1
-
-RSA keys may be between 1024 and 4096 bits long.
-What keysize do you want? (2048)</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify key length as 4096 bits:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>What keysize do you want? (2048) 4096
-Requested keysize is 4096 bits
-
-Please specify how long the key should be valid.
-         0 = key does not expire
-      &lt;n&gt;  = key expires in n days
-      &lt;n&gt;w = key expires in n weeks
-      &lt;n&gt;m = key expires in n months
-      &lt;n&gt;y = key expires in n years
-Key is valid for? (0)</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify key as non-expiring:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Key is valid for? (0) 0
-Key does not expire at all
-Is this correct? (y/N) y
-
-You need a user ID to identify your key; the software constructs the user ID
-from the Real Name, Comment and Email Address in this form:
-    "Heinrich Heine (Der Dichter) &lt;heinrichh@duesseldorf.de&gt;"
-
-Real name:</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Enter your name, email and comment:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>use your apache.org email</p>
-</li>
-<li>
-<p>the comment should be "CODE SIGNING KEY"</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Real name: Xxx Xxxxxxxxx
-Email address: <a href="mailto:&#x78;&#120;&#120;&#64;&#97;&#x70;&#97;&#99;&#104;&#x65;&#46;&#111;&#x72;&#103;">&#x78;&#120;&#120;&#64;&#97;&#x70;&#97;&#99;&#104;&#x65;&#46;&#111;&#x72;&#103;</a>
-Comment: CODE SIGNING KEY
-You selected this USER-ID:
- "Xxx Xxxxxxxxx (CODE SIGNING KEY) <a href="mailto:&#x78;&#x78;&#x78;&#x40;&#97;&#x70;&#97;&#99;h&#101;&#x2e;&#x6f;r&#x67;">&#x78;&#x78;&#x78;&#x40;&#97;&#x70;&#97;&#99;h&#101;&#x2e;&#x6f;r&#x67;</a>"</p>
-</div>
-<div class="paragraph">
-<p>Change (N)ame, &#169;omment, (E)mail or (O)kay/(Q)uit? O</p>
-</div>
-<div class="paragraph">
-<p>You need a Passphrase to protect your secret key.
-Enter passphrase:</p>
-</div>
-<div class="paragraph">
-<p>Provide a passphrase to secure your key.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Enter passphrase:
-Repeat passphrase:</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>GPG will goes on to generate your key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>We need to generate a lot of random bytes. It is a good idea to perform
-some other action (type on the keyboard, move the mouse, utilize the
-disks) during the prime generation; this gives the random number
-generator a better chance to gain enough entropy.
-...+++++
-.........................+++++
-We need to generate a lot of random bytes. It is a good idea to perform
-some other action (type on the keyboard, move the mouse, utilize the
-disks) during the prime generation; this gives the random number
-generator a better chance to gain enough entropy.
-....+++++
-...+++++
-gpg: key nnnnnnnn marked as ultimately trusted
-public and secret key created and signed.
-
-gpg: checking the trustdb
-gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
-gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
-pub   4096R/nnnnnnnn yyyy-mm-dd
-      Key fingerprint = xxxx xxxx xxxx xxxx xxxx  xxxx xxxx xxxx xxxx xxxx
-uid                  Xxx Xxxxxx &lt;xxx@apache.org&gt;
-sub   4096R/kkkkkkkk yyyy-mm-dd</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The public key with id nnnnnnnn should now be stored in <code>~/.gnupg/pubring.pgp</code> (on Windows 7, this is in <code>c:/Users/xxx/AppData/Roaming/gnupg/pubring.pgp</code>).</p>
-</div>
-<div class="paragraph">
-<p>To confirm the key has been generated, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --list-keys --fingerprint</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The key Id is the one true way to identify the key, and is also the last 8 digits of the fingerprint. The corresponding secret key for id <code>nnnnnnnn</code> is stored in <code>~/.gnupg/secring.pgp</code> (on Windows 7, this is in <code>c:/Users/xxx/AppData/Roaming/gnupg/secring.pgp</code>).</p>
-</div>
-<div class="paragraph">
-<p>It&#8217;s also worth confirming the key has the correct preference of algorithms (reflecting the initial configuration we did earlier). For this, enter the gpg shell for your new key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --edit-key nnnnnnnnn
-&gt;gpg</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>nnnnnnnn</code> is your key id. Now, use the 'showpref' subcommand to list details:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>gpg&gt; showpref
-[ultimate] (1). Xxx Xxxxxxxx (CODE SIGNING KEY) &lt;xxx@apache.org&gt;
-     Cipher: AES256, AES192, AES, CAST5, 3DES
-     Digest: SHA512, SHA384, SHA256, SHA224, SHA1
-     Compression: ZLIB, BZIP2, ZIP, Uncompressed
-     Features: MDC, Keyserver no-modify
-
-gpg&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The Digest line should list SHA-512 first and SHA-1 last. If it doesn&#8217;t, use the "setpref" command:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Finally, remember to take a backup of your key and the keyring (ie, backup the <code>.gnupg</code> directory and its contents).</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_subkey_generation">Subkey Generation</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>It&#8217;s recommended to use a subkey with an expiry date to sign releases, rather than your main, non-expiring key. If a subkey is present, then gpg will use it for signing in preference to the main key.</p>
-</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>After (binary) release artifacts are created, they are deployed to the ASF&#8217;s Nexus staging repository. However, Nexus seems unable to retrieve a subkey from the public key server. Until we find a fix/workaround for this, all releases should be signed just with a regular non-expiring main key.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>To create a subkey Enter the gpg shell using (the identifier of) your main key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>gpg --edit-key xxxxxxxx
-gpg&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Type 'addkey' to create a subkey, and enter your passphrase for the main key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>gpg&gt; addkey
-Key is protected.
-[enter your secret passphrase]
-
-You need a passphrase to unlock the secret key for
-user: "Dan Haywood (CODE SIGNING KEY) &lt;danhaywood@apache.org&gt;"
-4096-bit RSA key, ID xxxxxxxx, created 2011-02-01
-
-Please select what kind of key you want:
-   (3) DSA (sign only)
-   (4) RSA (sign only)
-   (5) Elgamal (encrypt only)
-   (6) RSA (encrypt only)
-Your selection?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Select (6) to choose an RSA key for encryption:</p>
-</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>It would seem that Nexus repository manager does not recognize RSA subkeys with an 'S&#8217;ign usage; see this discussion on a mailing list and this issue on Sonatype&#8217;s JIRA</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Your selection? 6
-
-RSA keys may be between 1024 and 4096 bits long.
-What keysize do you want? (2048) 4096
-
-Requested keysize is 4096 bits
-
-Please specify how long the key should be valid.
-         0 = key does not expire
-      &lt;n&gt;  = key expires in n days
-      &lt;n&gt;w = key expires in n weeks
-      &lt;n&gt;m = key expires in n months
-      &lt;n&gt;y = key expires in n years
-Key is valid for?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify that the key is valid for 1 year:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Key is valid for? (0) 1y
-
-Key expires at yy/MM/dd hh:mm:ss
-Is this correct? (y/N) y
-Really create? (y/N) y
-We need to generate a lot of random bytes. It is a good idea to perform
-some other action (type on the keyboard, move the mouse, utilize the
-disks) during the prime generation; this gives the random number
-generator a better chance to gain enough entropy.
-...+++++
-.+++++
-
-pub  4096R/xxxxxxxx  created: yyyy-mm-dd  expires: never       usage: SC
-                     trust: ultimate      validity: ultimate
-sub  4096R/xxxxxxxx  created: yyyy-mm-dd  expires: yyYY-mm-dd  usage: E
-[ultimate] (1). Dan Haywood (CODE SIGNING KEY) &lt;danhaywood@apache.org&gt;
-
-gpg&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Quit the gpg shell; you now have a subkey.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_generate_a_revocation_certificate">Generate a Revocation Certificate</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>It&#8217;s good practice to generate a number of revocation certificates so that the key can be revoked if it happens to be compromised. See the <a href="http://www.apache.org/dev/openpgp.html#revocation-certs">gpg page</a> on the Apache wiki for more background on this topic.</p>
-</div>
-<div class="paragraph">
-<p>First, generate a "no reason specified" key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --output revoke-nnnnnnnn-0.asc --armor --gen-revoke nnnnnnnn
-
-sec  4096R/nnnnnnnn yyyy-mm-dd Xxx Xxxxxxx (CODE SIGNING KEY) &lt;xx@apache.org&gt;
-Create a revocation certificate for this key? (y/N) Y
-
-Please select the reason for the revocation:
-  0 = No reason specified
-  1 = Key has been compromised
-  2 = Key is superseded
-  3 = Key is no longer used
-  Q = Cancel
-(Probably you want to select 1 here)
-Your decision?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Select 0.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Your decision? 0
-
-Enter an optional description; end it with an empty line:</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Provide a description:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>&gt; Generic certificate to revoke key, generated at time of key creation.
-&gt;
-Reason for revocation: No reason specified
-Generic certificate to revoke key, generated at time of key creation.
-Is this okay? (y/N)</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Confirm this is ok.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Is this okay? y
-
-You need a passphrase to unlock the secret key for
-user: "Xxx Xxxxxxx (CODE SIGNING KEY) &lt;xxx@apache.org&gt;"
-4096-bit RSA key, ID nnnnnnnn, created yyyy-mm-dd
-
-Enter passphrase:
-&lt;/pre&gt;
-
-Enter a passphrase:
-
-&lt;pre&gt;
-Enter passphrase:
-Revocation certificate created.
-
-Please move it to a medium which you can hide away; if Mallory gets
-access to this certificate he can use it to make your key unusable.
-It is smart to print this certificate and store it away, just in case
-your media become unreadable.  But have some caution:  The print system of
-your machine might store the data and make it available to others!</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The file <code>revoke-nnnnnnnn-0.asc</code> should be created: Then, backup this file.</p>
-</div>
-<div class="paragraph">
-<p>Now repeat the process to create two further revocation certificates:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">gpg --output revoke-nnnnnnnn-1.asc --armor --gen-revoke nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify reason as "1 = Key has been compromised"</p>
-</div>
-<div class="paragraph">
-<p>and:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">gpg --output revoke-nnnnnnnn-3.asc --armor --gen-revoke nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify reason as "3 = Key is no longer used"</p>
-</div>
-<div class="paragraph">
-<p>Backup these files also.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_publish_key">Publish Key</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>It is also necessary to publish your key. There are several places where this should be done. In most cases, you&#8217;ll need the "armored" &quot; (ie ASCII) representation of your key. This can be generated using:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --armor --export nnnnnnnn &gt; nnnnnnnn.asc</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>nnnnnnnn</code> is the id of your public key.</p>
-</div>
-<div class="paragraph">
-<p>You&#8217;ll also need the fingerprint of your key. This can be generated using:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --fingerprint nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The output from this command includes a line beginning "Key fingerprint", followed by a (space delimited) 40 character hexadecimal fingerprint. The last 8 characters should be the same as the key id (<code>nnnnnnnn</code>).</p>
-</div>
-<div class="sect2">
-<h3 id="_publish_to_a_public_key_server">Publish to a public key server</h3>
-<div class="paragraph">
-<p>To a publish your key to a public key server (eg the MIT key server hosted at <a href="http://pgp.mit.edu">http://pgp.mit.edu</a>), use the procedure below. Public key servers synchronize with each other, so publishing to one key server should be sufficient. For background reading on this, see the <a href="http://www.apache.org/dev/release-signing.html#keyserver-upload">release signing page</a> on the Apache wiki, and the <a href="http://maven.apache.org/developers/release/pmc-gpg-keys.html">gpg key page</a> on the Maven wiki.</p>
-</div>
-<div class="paragraph">
-<p>To send the key up to the key server:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --send-keys --keyserver pgp.mit.edu nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>nnnnnnnn</code> is the key Id.</p>
-</div>
-<div class="paragraph">
-<p>Alternatively, you can browse to the <a href="http://pgp.mit.edu/">MIT key server</a> and paste in the armored representation of your key.</p>
-</div>
-<div class="paragraph">
-<p>Confirm the key has been added by browsing to submitting the following URL:</p>
-</div>
-<div class="paragraph">
-<p><code><a href="http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&amp;op=vindex" class="bare">http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&amp;op=vindex</a></code></p>
-</div>
-<div class="paragraph">
-<p>again, where <code>nnnnnnnn</code> is the key Id.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_publish_to_your_apache_home_directory">Publish to your Apache home directory</h3>
-<div class="paragraph">
-<p>The armored representation of your public key should be uploaded to your home directory on <code>people.apache.org</code>, and renamed as <code>.pgpkey</code>. Make sure this is readable by all.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_publish_to_your_apache_html_home_directory">Publish to your Apache HTML home directory</h3>
-<div class="paragraph">
-<p>The armored representation of your public key should be uploaded to your <code>public_html</code> home directory on <code>people.apache.org</code>, named <code>nnnnnnnn.asc</code>. Make sure this is readable by all.</p>
-</div>
-<div class="paragraph">
-<p>Check the file is accessible by browsing to:</p>
-</div>
-<div class="paragraph">
-<p><code><a href="http://people.apache.org/~xxxxxxxx/nnnnnnnn.asc" class="bare">http://people.apache.org/~xxxxxxxx/nnnnnnnn.asc</a></code></p>
-</div>
-<div class="paragraph">
-<p>where</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>xxxxxxxx</code> is your apache LDAP user name</p>
-</li>
-<li>
-<p><code>nnnnnnnn</code> is your public key id.</p>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_foaf">FOAF</h3>
-<div class="paragraph">
-<p>First, check out the committers/info directory:</p>
-</div>
-<div class="paragraph">
-<p>Go to Apache <a href="http://people.apache.org/foaf/foafamatic.html">FOAF-a-matic</a> web page to generate the FOAF file text (we copy this text out in a minute):</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>enter ASF LDAP user name</p>
-</li>
-<li>
-<p>enter First name, Last name</p>
-</li>
-<li>
-<p>for PGP key fingerprints, add Key</p>
-</li>
-<li>
-<p>paste in the key id</p>
-</li>
-<li>
-<p>paste in the fingerprint</p>
-</li>
-<li>
-<p>press "Create"</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>In the box below, you should have a FOAF file, something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
-<span class="tag">&lt;rdf:RDF</span>
-      <span class="attribute-name">xmlns:rdf</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:rdfs</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2000/01/rdf-schema#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:foaf</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.com/foaf/0.1/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:geo</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2003/01/geo/wgs84_pos#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:pm</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.web-semantics.org/ns/pm#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:wot</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.com/wot/0.1/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:rss</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://purl.org/rss/1.0/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:dc</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://purl.org/dc/elements/1.1/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:ical</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2002/12/cal/ical#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:doap</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://usefulinc.com/ns/doap#</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-  <span class="tag">&lt;foaf:Person</span> <span class="attribute-name">rdf:ID</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">danhaywood</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-    <span class="tag">&lt;foaf:name&gt;</span>Xxx Xxxxxxxx<span class="tag">&lt;/foaf:name&gt;</span>
-    <span class="tag">&lt;foaf:givenname&gt;</span>Xxx<span class="tag">&lt;/foaf:givenname&gt;</span>
-    <span class="tag">&lt;foaf:family_name&gt;</span>Xxxxxxxx<span class="tag">&lt;/foaf:family_name&gt;</span>
-    <span class="tag">&lt;wot:hasKey&gt;</span>
-      <span class="tag">&lt;wot:PubKey&gt;</span>
-        <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
-        <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
-      <span class="tag">&lt;/wot:PubKey&gt;</span>
-    <span class="tag">&lt;/wot:hasKey&gt;</span>
-  <span class="tag">&lt;/foaf:Person&gt;</span>
-<span class="tag">&lt;/rdf:RDF&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>(If you are creating the FOAF file for the first time, you may want to add additional details).</p>
-</div>
-<div class="paragraph">
-<p>From this, copy out the <code>wot:key</code>, and paste into your FDF file in <code>committers/info</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;wot:hasKey&gt;</span>
-  <span class="tag">&lt;wot:PubKey&gt;</span>
-    <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
-    <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
-  <span class="tag">&lt;/wot:PubKey&gt;</span>
-<span class="tag">&lt;/wot:hasKey&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, manually add in a <code>&lt;wot:pubkeyAddress&gt;</code> element within <code>&lt;wot:PubKey&gt;</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;wot:hasKey&gt;</span>
-  <span class="tag">&lt;wot:PubKey&gt;</span>
-    <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
-    <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
-    <span class="tag">&lt;wot:pubkeyAddress</span> <span class="attribute-name">rdf:resource</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://people.apache.org/~username/nnnnnnnn.asc/</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-  <span class="tag">&lt;/wot:PubKey&gt;</span>
-<span class="tag">&lt;/wot:hasKey&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>ie, referencing your publically exported public key</p>
-</div>
-<div class="paragraph">
-<p>Finally, commit your changes.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_save_to_code_keys_code">Save to <code>KEYS</code></h3>
-<div class="paragraph">
-<p>The armored representation of the public key should be saved to Apache Isis' <code>KEYS</code> file, <a href="http://www.apache.org/dist/isis/KEYS">http://www.apache.org/dist/isis/KEYS</a> (that is, in the ASF distribution directory for Apache Isis).</p>
-</div>
-<div class="paragraph">
-<p>First, in a new directory, checkout this file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>svn -N co https://svn.apache.org/repos/asf/isis/ .</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This should bring down the <code>KEYS</code> file.</p>
-</div>
-<div class="paragraph">
-<p>Then, export your signature and armored representation.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>gpg --list-sigs nnnnnnnn &gt;&gt;KEYS
-gpg --armor --export nnnnnnnn &gt;&gt;KEYS</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then commit.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_id_apache_org">id.apache.org</h3>
-<div class="paragraph">
-<p>Log onto <code>id.apache.org</code> and ensure that the finger print of your public key is correct.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_attend_key_signing_party_apache_web_of_trust">Attend Key Signing Party (Apache web of trust)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>It is strongly advised that the contributor attend a key signing party at an Apache event, in order that other Apache committers/members can in person verify their identity against the key. The process for this is described <a href="http://www.apache.org/dev/release-signing.html#key-signing-party">here</a> and <a href="http://wiki.apache.org/apachecon/PgpKeySigning">here</a>.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_update_maven_settings_file_code_m2_settings_xml_code">Update Maven Settings file (<code>~/.m2/settings.xml</code>)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The Maven release plugin will automatically sign the release, however it is necessary to update the <code>~/.m2/settings.xml</code> file with your GPG acronym passphrase in order that it can use your secret key. This is defined under a profile so that it is activated only when we perform a release (as defined by <code>[org,apache:apache]</code> parent POM.</p>
-</div>
-<div class="paragraph">
-<p>Therefore, make the following edits:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;settings&gt;</span>
-  ...
-  <span class="tag">&lt;profiles&gt;</span>
-    <span class="tag">&lt;profile&gt;</span>
-      <span class="tag">&lt;id&gt;</span>apache-release<span class="tag">&lt;/id&gt;</span>
-      <span class="tag">&lt;properties&gt;</span>
-        <span class="tag">&lt;gpg.passphrase&gt;</span>xxx xxx xxx xxx xxx xxx xxx<span class="tag">&lt;/gpg.passphrase&gt;</span>
-      <span class="tag">&lt;/properties&gt;</span>
-    <span class="tag">&lt;/profile&gt;</span>
-  <span class="tag">&lt;/profiles&gt;</span>
-<span class="tag">&lt;/settings&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>In addition, to allow the release plugin to tag SVN changes, you must either add in your LDAP username/password or configure <code>.ssh</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;settings&gt;</span>
-  ...
-  <span class="tag">&lt;servers&gt;</span>
-    ...
-    <span class="tag">&lt;server&gt;</span>
-      <span class="tag">&lt;id&gt;</span>apache.releases.https<span class="tag">&lt;/id&gt;</span>
-      <span class="tag">&lt;username&gt;</span>xxxx<span class="tag">&lt;/username&gt;</span>
-      <span class="tag">&lt;password&gt;</span>xxxx<span class="tag">&lt;/password&gt;</span>
-    <span class="tag">&lt;/server&gt;</span>
-  <span class="tag">&lt;/servers&gt;</span>
-<span class="tag">&lt;/settings&gt;</span></code></pre>
-</div>
-</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="#_install_and_configure_gpg">Install and Configure gpg</a></li>
-<li><a href="#_key_generation">Key Generation</a></li>
-<li><a href="#_subkey_generation">Subkey Generation</a></li>
-<li><a href="#_generate_a_revocation_certificate">Generate a Revocation Certificate</a></li>
-<li><a href="#_publish_key">Publish Key</a>
-<ul class="sectlevel2">
-<li><a href="#_publish_to_a_public_key_server">Publish to a public key server</a></li>
-<li><a href="#_publish_to_your_apache_home_directory">Publish to your Apache home directory</a></li>
-<li><a href="#_publish_to_your_apache_html_home_directory">Publish to your Apache HTML home directory</a></li>
-<li><a href="#_foaf">FOAF</a></li>
-<li><a href="#_save_to_code_keys_code">Save to <code>KEYS</code></a></li>
-<li><a href="#_id_apache_org">id.apache.org</a></li>
-</ul>
-</li>
-<li><a href="#_attend_key_signing_party_apache_web_of_trust">Attend Key Signing Party (Apache web of trust)</a></li>
-<li><a href="#_update_maven_settings_file_code_m2_settings_xml_code">Update Maven Settings file (<code>~/.m2/settings.xml</code>)</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" === "Key Generation") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/migration-notes.html
----------------------------------------------------------------------
diff --git a/content/migration-notes.html b/content/migration-notes.html
index 172f523..a0053b4 100644
--- a/content/migration-notes.html
+++ b/content/migration-notes.html
@@ -699,8 +699,25 @@ isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true
 isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true</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>Previously Apache Isis would automatically add the auto-create property if they were absent from <code>isis.properties</code>, set to "true".  The framework does still add the property, but now sets it to "false".  This is to prevent the framework from unexpectedly modifying a target database if the application was misconfigured and the auto-create property not defined.</p>
+</div>
+<div class="paragraph">
+<p>The framework will also automatically add the auto-validate property.  Previously this was set to "true" and it is <em>still</em> set to "true"; there is no risk of the target database being modified as a result of this auto-validate property being defaulted by the framework.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 <div class="paragraph">
-<p>and change:</p>
+<p>In addition, change:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -715,13 +732,9 @@ isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true</cod
 <pre class="CodeRay highlight"><code data-lang="ini">isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase</code></pre>
 </div>
 </div>
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
+</div>
+<div class="sect3">
+<h4 id="_run_code_mvn_clean_code">Run <code>mvn clean</code> !</h4>
 <div class="paragraph">
 <p>Be careful to ensure that your classes are only enhanced by the DataNucleus 4 enhancer, and <em>not</em> by the DataNucleus 3 enhancer.  Or even, be careful that they are not doubly enhanced.  One of our committers had this situation and it led to all sorts of bizarre issues.  The solution, it turned out, was actually just to do a full <code>mvn clean</code>.</p>
 </div>
@@ -738,10 +751,6 @@ isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true</cod
 </li>
 </ul>
 </div>
-</td>
-</tr>
-</table>
-</div>
 </div>
 </div>
 <div class="sect2">
@@ -1288,6 +1297,7 @@ into the new <code>org.isisaddons.module.settings:isis-module-settings-dom</code
 <li><a href="#_in_the_parent_code_pom_xml_code">In the parent <code>pom.xml</code></a></li>
 <li><a href="#_in_code_dom_pom_xml_code">In <code>dom/pom.xml</code>,</a></li>
 <li><a href="#_in_the_webapp_s_code_persistor_datanucleus_properties_code">In the webapp&#8217;s <code>persistor_datanucleus.properties</code></a></li>
+<li><a href="#_run_code_mvn_clean_code">Run <code>mvn clean</code> !</a></li>
 </ul>
 </li>
 <li><a href="#_migration-notes_1.8.0-to-1.9.0_upgrading-to-java8">Upgrading to Java 8</a>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/pmc-notes.html
----------------------------------------------------------------------
diff --git a/content/pmc-notes.html b/content/pmc-notes.html
deleted file mode 100644
index 68df19d..0000000
--- a/content/pmc-notes.html
+++ /dev/null
@@ -1,848 +0,0 @@
-<!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>PMC Notes</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><br/><br/></p>
-</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>These are some general jottings on occasionally performed tasks by the PMC.  ASF documents can be found <a href="http://www.apache.org/dev/pmc.html">here</a></p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_accessing_code_people_apache_org_code">Accessing <code>people.apache.org</code></h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Must be accessed via ssh.</p>
-</div>
-<div class="paragraph">
-<p>eg:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>ssh danhaywood@people.apache.org</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>and when prompted, provide passphrase for private key&#8230;&#8203; though I&#8217;ve forgotten what I did to set this up in the first place, though :-(</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_ldap_access_unix_groups">LDAP Access (UNIX groups)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Whenever we get a new committer, the ASF LDAP entries must be maintained to grant access to our repos and various other 'karma'.</p>
-</div>
-<div class="paragraph">
-<p>Log onto <code>people.apache.org</code>, then use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>list_unix_group.pl isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>to list committers</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>list_committee.pl isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>to list the PMC committee members (in Apache Isis, every committer should be on the PMC committee)</p>
-</div>
-<div class="paragraph">
-<p>To change membership of either the committers or the PMC, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>modify_unix_group.pl isis --add joebloggs
-modify_unix_group.pl isis --remove joebloggs</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>and</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>modify_committee.pl gump --add joebloggs
-modify_committee.pl gump --remove joebloggs</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>respectively.</p>
-</div>
-<div class="paragraph">
-<p>Further details are in <a href="http://www.apache.org/dev/pmc.html#SVNaccess">these ASF docs</a>. (They talk about SVN access, but really it is LDAP access).</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="#_accessing_code_people_apache_org_code">Accessing <code>people.apache.org</code></a></li>
-<li><a href="#_ldap_access_unix_groups">LDAP Access (UNIX groups)</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" === "PMC Notes") {
-        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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/verifying-releases-script.html
----------------------------------------------------------------------
diff --git a/content/verifying-releases-script.html b/content/verifying-releases-script.html
deleted file mode 100644
index d6fde77..0000000
--- a/content/verifying-releases-script.html
+++ /dev/null
@@ -1,921 +0,0 @@
-<!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>Verify releases using a script</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>To save some time in verifying an Apache Isis release we&#8217;ve assembled a script to automate the process. The script is tested on Mac OSX and Linux. Windows users can use Cygwin or <a href="http://msysgit.github.io/">msysgit</a>.</p>
-</div>
-<div class="paragraph">
-<p>It&#8217;s <em>recommended</em> that you start this process in an empty directory:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mkdir ~/verify-isis-release
-cd ~/verify-isis-release</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_copy_the_script_to_your_local_machine">Copy the script to your local machine</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The script could be enhanced in many ways, feel free to do so! Copy (or <a href="resources/release-process/verify-isis-release.sh">download</a>) the <code>verify-isis-release.sh</code> script below:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">#!/bin/bash
-# Instructions:
-# -Create an empty directory
-# -Put a .txt file in it containing a list of all the urls of the zip files
-# -Run this script
-# TODO: enhance this script so it will stop when something is broken
-_download(){
-    for fil in `cat *.txt`
-    do
-       echo 'Downloading '$fil
-       curl  -L -O $fil
-       curl  -L -O $fil.asc
-    done
-}
-_verify(){
-    for zip in *.zip
-    do
-       echo 'Verifying '$zip
-       gpg --verify $zip.asc $zip
-    done
-}
-_unpack(){
-    echo 'Unpacking '
-    unzip -q '*.zip'
-}
-_build(){
-    echo 'Removing Apache Isis from local repo '$module
-    rm -rf ~/.m2/repository/org/apache/isis
-    COUNTER=0
-    for module in ./*/
-    do
-       COUNTER=$[COUNTER+1]
-       if [ $COUNTER -eq 1 ]
-       then
-         cd $module
-         echo 'Building Core '$module
-         mvn clean install -o
-         cd ..
-       else
-         cd $module
-         echo 'Building Module '$module
-         mvn clean install
-         cd ..
-       fi
-    done
-}
-# The work starts here
-_download
-_verify
-_unpack
-_build</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Make sure the script is executable:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>chmod +x verify-isis-release.sh</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_create_an_input_file">Create an input file</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The input file is a plain <code>.txt</code> file containing all urls to the packages to be verified. Here&#8217;s a sample of the release of Apache Isis 1.8.0:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>https://repository.apache.org/content/repositories/orgapacheisis-063/org/apache/isis/core/isis/1.8.0/isis-1.8.0-source-release.zip
-https://repository.apache.org/content/repositories/orgapacheisis-065/org/apache/isis/archetype/simpleapp-archetype/1.8.0/simpleapp-archetype-1.8.0-source-release.zip</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The actual list of packages to be verified will be provided through the mailing list.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_clean_out_apache_isis_from_your_local_maven_repo">Clean out Apache Isis from your local Maven repo</h2>
-<div class="sectionbody">
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_execute_the_script">Execute the script</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Execute&#8230;&#8203;</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">./verify-isis-release.sh</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>…and get yourself a cup of coffee.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_test_the_archetype">Test the archetype</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Assuming that everything builds ok, then test the archetypes (adjust version as necessary):</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 groupId=com.mycompany \
-    -D artifactId=myapp \
-    -D version=1.0-SNAPSHOT \
-    -B \
-    -o \
-    -D archetypeVersion=1.8.0   # adjust version as necessary
-
-cd myapp
-mvn clean install -o
-mvn -P self-host antrun:run</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If it runs up ok, then it&#8217;s time to <a href="verifying-releases.html">vote</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="#_copy_the_script_to_your_local_machine">Copy the script to your local machine</a></li>
-<li><a href="#_create_an_input_file">Create an input file</a></li>
-<li><a href="#_clean_out_apache_isis_from_your_local_maven_repo">Clean out Apache Isis from your local Maven repo</a></li>
-<li><a href="#_execute_the_script">Execute the script</a></li>
-<li><a href="#_test_the_archetype">Test the archetype</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" === "Verify releases using a script") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/verifying-releases-using-creadur-tools.html
----------------------------------------------------------------------
diff --git a/content/verifying-releases-using-creadur-tools.html b/content/verifying-releases-using-creadur-tools.html
deleted file mode 100644
index e969fce..0000000
--- a/content/verifying-releases-using-creadur-tools.html
+++ /dev/null
@@ -1,817 +0,0 @@
-<!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>Verifying Releases using Creadur Tools</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>The <a href="http://creadur.apache.org">Apache Creadur</a> project exists to provide a set of tools to ensure compliance with Apache&#8217;s licensing standards. The main release auditing tool, <a href="http://creadur.apache.org/rat">Apache RAT</a>, is used in the preparation of the release (as documented <a href="release-process.html">here</a>). Creadur&#8217;s remaining tools are to support the verification process.</p>
-</div>
-<div class="paragraph">
-<p>At the time of writing, these additional tools are quite young and haven&#8217;t been formally released; so to use them will take a little bit of work. In the future we expect these tools to mature and ease the effort required to verify releases.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_using_the_tentacles_tool">Using the Tentacles tool</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>At the time of writing the Tentacles tool hasn&#8217;t been released, so you&#8217;ll need to build from source:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mkdir /tmp/verify
-cd /tmp/verify
-svn co http://svn.apache.org/repos/asf/creadur/tentacles/trunk creadur-tentacles
-cd creadur-tentacles
-mvn clean install</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>You can pull down a release, using a command such as:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>cd /tmp/verify
-java -jar creadur-tentacles/target/apache-tentacles-0.1-SNAPSHOT.jar https://repository.apache.org/content/repositories/orgapacheisis-NNN/</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>NNN</code> is the repository that has the staged artifacts requiring verification.</p>
-</div>
-<div class="paragraph">
-<p>As per the <a href="http://creadur.apache.org/tentacles/">tentacles documentation</a>, this command generates a report called <code>archives.html</code> (in the newly created <code>orgapacheisis-NNN</code> directory). This lists all of the top-level binaires, their <code>LICENSE</code> and <code>NOTICE</code> files and any <code>LICENSE</code> and <code>NOTICE</code> files of any binaries they may contain.</p>
-</div>
-<div class="paragraph">
-<p>Validation of the output at this point is all still manual. Things to check for include:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>any binaries that contain no LICENSE and NOTICE files</p>
-</li>
-<li>
-<p>any binaries that contain more than one LICENSE or NOTICE file</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>In this report, each binary will have three links listed after its name '(licenses, notices, contents)'</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="#_using_the_tentacles_tool">Using the Tentacles tool</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" === "Verifying Releases using Creadur Tools") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/verifying-releases.html
----------------------------------------------------------------------
diff --git a/content/verifying-releases.html b/content/verifying-releases.html
deleted file mode 100644
index 0e7b99b..0000000
--- a/content/verifying-releases.html
+++ /dev/null
@@ -1,939 +0,0 @@
-<!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>Verifying Releases</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>Whenever a committer announces a vote on a release on the <a href="../support.html">dev mailing list</a>, it is the responsibility of the project&#8217;s PMC to cast their vote on the release. Anyone else can also vote, but only members of the Apache Isis PMC&#8217;s vote are binding.</p>
-</div>
-<div class="paragraph">
-<p>This page provides some guidance on what a voter is expected to verify before casting their vote.</p>
-</div>
-<div class="paragraph">
-<p>Per this <a href="http://www.apache.org/dev/release.html">ASF documentation</a>, the legal requirements for an ASF release are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>a source zip file + corresponding signature (signed by the release manager, which is in the ASF web of trust and in our KEYS file)</p>
-</li>
-<li>
-<p>all source files have the Apache license (this is ensured by the running of the rat plugin prior to release; you could run it on the unzipped source)</p>
-</li>
-<li>
-<p>all dependencies are appropriately licensed; see the <code>DEPENDENCIES</code> file which is automatically generated from the POMs plus the supplemental-models.xml file</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Note that the binaries are <em>not</em> an ASF release, they merely exist on the Maven central repo as a convenience. That said, you might also want to verify the release by pulling the binaries from the Maven staging repository. Details of how to do this are also documented below.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_prerequisites">Prerequisites</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To verify the source ZIP files, you will need to have imported the public keys used for signing Apache Isis releases. These can be downloaded from the root of the Apache Isis source tree.</p>
-</div>
-<div class="paragraph">
-<p>Since the Apache Isis source is mirrored on github.com, you can just use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">curl http://www.apache.org/dist/isis/KEYS &gt; /tmp/KEYS
-gpg --import /tmp/KEYS</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_verifying_the_source_release_artifacts">Verifying the source release artifacts</h2>
-<div class="sectionbody">
-<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>Note: to automate this next stage, there is also a <a href="/contributors/verifying-releases-script.html">script</a> available; but read what follows first before using the script.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Download both the ZIP and .ASC files from the location specified in the voting email. To verify that the signature is correct, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">gpg --verify isis-x.y.z.zip.asc isis-x.y.z.zip</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_building_the_source_release_artifacts">Building the source release artifacts</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Assuming the ZIP file verifies, it should be unpacked, and then the artifact built from source.</p>
-</div>
-<div class="paragraph">
-<p>First, delete all Isis artifacts from your local Maven repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To build Apache Isis core, first download any dependencies:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn dependency:go-offline</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Check that no Isis artifacts have yet been downloaded, ie there is no <code>~/.m2/org/repository/org/apache/isis</code> directory. If there are, it could indicate that the release being verified incorrectly references previous versions of Apache Isis core.</p>
-</div>
-<div class="paragraph">
-<p>Assuming all is ok, build using the <code>-o</code> offline flag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>mvn clean install -o</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Confirm that the versions of the Isis artifacts now cached in your local repository are correct.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_verifying_the_binary_release_artifacts_using_the_maven_staging_repository">Verifying the binary release artifacts (using the Maven staging repository)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If you wish, you can verify the binary releases by configuring your local Maven install to point to the Maven Maven staging repository (or repositories) and then using them, eg to run the <a href="../intro/getting-started/simpleapp-archetype.html">simpleapp archetype</a> and running the resultant app.</p>
-</div>
-<div class="paragraph">
-<p>Configuring your local Maven install amounts to updating the <code>~/.m2/settings.xml</code> file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;profiles&gt;</span>
-    <span class="tag">&lt;profile&gt;</span>
-        <span class="tag">&lt;id&gt;</span>verify-isis<span class="tag">&lt;/id&gt;</span>
-        <span class="tag">&lt;repositories&gt;</span>
-            <span class="tag">&lt;repository&gt;</span>
-                <span class="tag">&lt;id&gt;</span>isis-core-staging<span class="tag">&lt;/id&gt;</span>
-                <span class="tag">&lt;name&gt;</span>Isis Core Staging<span class="tag">&lt;/name&gt;</span>
-                <span class="tag">&lt;releases&gt;</span>
-                    <span class="tag">&lt;enabled&gt;</span>true<span class="tag">&lt;/enabled&gt;</span>
-                    <span class="tag">&lt;updatePolicy&gt;</span>always<span class="tag">&lt;/updatePolicy&gt;</span>
-                    <span class="tag">&lt;checksumPolicy&gt;</span>warn<span class="tag">&lt;/checksumPolicy&gt;</span>
-                <span class="tag">&lt;/releases&gt;</span>
-                <span class="tag">&lt;url&gt;</span>http://repository.apache.org/content/repositories/orgapacheisis-10xx<span class="tag">&lt;/url&gt;</span>
-                <span class="tag">&lt;layout&gt;</span>default<span class="tag">&lt;/layout&gt;</span>
-            <span class="tag">&lt;/repository&gt;</span>
-            ...
-        <span class="tag">&lt;/repositories&gt;</span>
-    <span class="tag">&lt;/profile&gt;</span>
-    ...
-<span class="tag">&lt;/profiles&gt;</span>
-<span class="tag">&lt;activeProfiles&gt;</span>
-    <span class="tag">&lt;activeProfile&gt;</span>verify-isis<span class="tag">&lt;/activeProfile&gt;</span>
-    ...
-<span class="tag">&lt;/activeProfiles&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where the repository URL is as provided in the VOTE email. If there is more than one repository (as is sometimes the case if multiple components have been released), then repeat the &lt;repository&gt; section for each.</p>
-</div>
-<div class="paragraph">
-<p>Once the vote has completed, the staging repositories will be removed and so you should deactive the profile (comment out the <code>&lt;activeProfile&gt;</code> element). If you forget to deactive the profile, there should be no adverse effects; Maven will just spend unnecessary cycles attempting to hit a non-existent repo.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_using_the_creadur_tools">Using the Creadur Tools</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The <a href="http://creadur.apache.org">Apache Creadur</a> project exists to provide a set of tools to ensure compliance with Apache&#8217;s licensing standards. The main release auditing tool, <a href="http://creadur.apache.org/rat">Apache RAT</a>, is used in the preparation of the release (as documented <a href="release-process.html">here</a>). Creadur&#8217;s remaining tools are to support the verification process.</p>
-</div>
-<div class="paragraph">
-<p>At the time of writing, these additional tools are quite young and haven&#8217;t been formally released; so to use them will take a little bit of work. See <a href="verifying-releases-using-creadur-tools.html">here</a> for more details.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_casting_a_vote">Casting a Vote</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>When you have made the above checks (and any other checks you think may be relevant), cast your vote by replying to the email thread on the mailing list. If you are casting <code>-1</code>, please provide details of the problem(s) you have found.</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="#_prerequisites">Prerequisites</a></li>
-<li><a href="#_verifying_the_source_release_artifacts">Verifying the source release artifacts</a></li>
-<li><a href="#_building_the_source_release_artifacts">Building the source release artifacts</a></li>
-<li><a href="#_verifying_the_binary_release_artifacts_using_the_maven_staging_repository">Verifying the binary release artifacts (using the Maven staging repository)</a></li>
-<li><a href="#_using_the_creadur_tools">Using the Creadur Tools</a></li>
-<li><a href="#_casting_a_vote">Casting a Vote</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" === "Verifying Releases") {
-        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>


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

Posted by da...@apache.org.
ISIS-1133: contributors guide


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

Branch: refs/heads/asf-site
Commit: e6efa09309698ba89584c34234f6bd65799e87c2
Parents: 3e76e8b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 10 08:40:25 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 10 08:40:25 2015 +0100

----------------------------------------------------------------------
 content/applying-patches.html                   |   877 -
 content/building-isis.html                      |  1001 -
 content/contributing.html                       |  1130 --
 content/documentation.html                      |   177 +-
 content/editor-templates.html                   |   882 -
 content/git-cookbook.html                       |  1075 --
 content/git-policy.html                         |   886 -
 content/guides/cg.html                          |  6910 +++++++
 content/guides/dg.html                          |  1752 --
 .../images/building-isis/setting-up-git.png     |   Bin 0 -> 24406 bytes
 .../images/contributing/git-workflow-2.png      |   Bin 0 -> 40826 bytes
 .../guides/images/contributing/git-workflow.png |   Bin 0 -> 48331 bytes
 .../images/contributing/git-workflow.pptx       |   Bin 0 -> 68580 bytes
 .../images/contributing/github-cloning.png      |   Bin 0 -> 18935 bytes
 .../images/contributing/github-forking.png      |   Bin 0 -> 10274 bytes
 .../reference-classes/issue-in-more-detail.png  |   Bin 0 -> 7905 bytes
 .../jira-create-release-notes.png               |   Bin 0 -> 66123 bytes
 .../images/release-process/nexus-release-1.png  |   Bin 0 -> 82855 bytes
 .../images/release-process/nexus-staging-0.png  |   Bin 0 -> 76120 bytes
 .../images/release-process/nexus-staging-1.png  |   Bin 0 -> 105396 bytes
 .../images/release-process/nexus-staging-2.png  |   Bin 0 -> 108834 bytes
 .../images/release-process/nexus-staging-2a.png |   Bin 0 -> 108230 bytes
 .../images/release-process/nexus-staging-3.png  |   Bin 0 -> 122517 bytes
 .../images/release-process/nexus-staging-4.png  |   Bin 0 -> 96733 bytes
 content/guides/rg.html                          |   244 +-
 content/guides/simpleapp-archetype.html         |  1033 +
 content/guides/tg.html                          |  3098 +++
 content/guides/ug.html                          | 16663 +++++++----------
 content/help.html                               |     2 +-
 content/images/building-isis/setting-up-git.png |   Bin 24406 -> 0 bytes
 content/images/contributing/git-workflow-2.png  |   Bin 40826 -> 0 bytes
 content/images/contributing/git-workflow.png    |   Bin 48331 -> 0 bytes
 content/images/contributing/git-workflow.pptx   |   Bin 68580 -> 0 bytes
 content/images/contributing/github-cloning.png  |   Bin 18935 -> 0 bytes
 content/images/contributing/github-forking.png  |   Bin 10274 -> 0 bytes
 .../jira-create-release-notes.png               |   Bin 66123 -> 0 bytes
 .../images/release-process/nexus-release-1.png  |   Bin 82855 -> 0 bytes
 .../images/release-process/nexus-staging-0.png  |   Bin 76120 -> 0 bytes
 .../images/release-process/nexus-staging-1.png  |   Bin 105396 -> 0 bytes
 .../images/release-process/nexus-staging-2.png  |   Bin 108834 -> 0 bytes
 .../images/release-process/nexus-staging-2a.png |   Bin 108230 -> 0 bytes
 .../images/release-process/nexus-staging-3.png  |   Bin 122517 -> 0 bytes
 .../images/release-process/nexus-staging-4.png  |   Bin 96733 -> 0 bytes
 content/key-generation.html                     |  1475 --
 content/migration-notes.html                    |    34 +-
 content/pmc-notes.html                          |   848 -
 content/recreating-an-archetype.html            |  1180 --
 content/release-checklist.html                  |   858 -
 content/release-process-one-pager.html          |  1114 --
 content/release-process.html                    |  2249 ---
 content/screencasts.html                        |     4 +-
 content/simpleapp-archetype.html                |  1036 -
 content/snapshot-process.html                   |   892 -
 content/verifying-releases-script.html          |   921 -
 .../verifying-releases-using-creadur-tools.html |   817 -
 content/verifying-releases.html                 |   939 -
 content/versioning-policy.html                  |   805 -
 57 files changed, 18455 insertions(+), 30447 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/applying-patches.html
----------------------------------------------------------------------
diff --git a/content/applying-patches.html b/content/applying-patches.html
deleted file mode 100644
index d73c09f..0000000
--- a/content/applying-patches.html
+++ /dev/null
@@ -1,877 +0,0 @@
-<!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>Applying Patches</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>If a patch is received on a JIRA ticket, then it should be reviewed and applied. The commands are slightly different for diff files vs patch files.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_diff_files">Diff files</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If a diff file has been provided, then it can easily be applied using eGit&#8217;s wizards (Eclipse&#8217;s Git integration)…</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-TODO - this stuff needs fleshing out &#8230;&#8203;
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_patch_files">Patch files</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If a patch file has been provided, then it can be applied using command line tools.</p>
-</div>
-<div class="sect2">
-<h3 id="_inspect_the_patch">Inspect the patch</h3>
-<div class="paragraph">
-<p>First, take a look at what changes are in the patch. You can do this easily with <code>git apply</code></p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git apply --stat ISIS-xxx.patch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Note that this command does not apply the patch, but only shows you the stats about what it’ll do. After peeking into the patch file with your favorite editor, you can see what the actual changes are.</p>
-</div>
-<div class="paragraph">
-<p>Next, you&#8217;re interested in how troublesome the patch is going to be. Git allows you to test the patch before you actually apply it.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git apply --check ISIS-xxx.patch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If you don&#8217;t get any errors, the patch has no conflicts. Otherwise you may see what trouble you’ll run into.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_apply_a_clean_patch">Apply a (clean) patch</h3>
-<div class="paragraph">
-<p>To apply a clean patch (adding the items and commit/signoff in a single step), use <code>git am</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git am --signoff &lt; ISIS-xxx.patch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This preserves the original author&#8217;s commit message.</p>
-</div>
-<div class="paragraph">
-<p>However, this can fail if the patch file does not contain the original committers email address. In this case you will need to abort the <code>am</code> session:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git am abort</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>and continue on by applying a non-clean patch, as described next.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_apply_a_non_clean_patch">Apply a (non-clean) patch</h3>
-<div class="paragraph">
-<p>If the patch does not apply cleanly, then the original authors commit message cannot be preserved. This sequence in this case is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git apply ISIS-xxx.patch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Fix up any issues. The add and commit as usual</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>git add .
-git commit -am "&lt;original authors' commit message&gt;" --signoff</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The <code>--signoff</code> simply adds a line to the commit message indicating you have signed off the commit.</p>
-</div>
-<div class="paragraph">
-<p>Information adapted from <a href="https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/">this blog post</a> and <a href="http://wiki.eclipse.org/Jetty/Contributor/Contributing_Patches">this wiki page</a>.</p>
-</div>
-</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="#_diff_files">Diff files</a></li>
-<li><a href="#_patch_files">Patch files</a>
-<ul class="sectlevel2">
-<li><a href="#_inspect_the_patch">Inspect the patch</a></li>
-<li><a href="#_apply_a_clean_patch">Apply a (clean) patch</a></li>
-<li><a href="#_apply_a_non_clean_patch">Apply a (non-clean) patch</a></li>
-</ul>
-</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" === "Applying Patches") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/building-isis.html
----------------------------------------------------------------------
diff --git a/content/building-isis.html b/content/building-isis.html
deleted file mode 100644
index ddb0546..0000000
--- a/content/building-isis.html
+++ /dev/null
@@ -1,1001 +0,0 @@
-<!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>Building Apache Isis</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><br/><br/></p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_git">Git</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The Apache Isis source code lives in a git repo.</p>
-</div>
-<div class="sect2">
-<h3 id="_installation">Installation</h3>
-<div class="paragraph">
-<p>The easiest place to get hold of command-line git is probably the <a href="http://git-scm.com/downloads">github download page</a>.</p>
-</div>
-<div class="paragraph">
-<p>On Windows, this also installs the rather good mSysGit Unix shell. We recommend that you enable git for both the mSysgit and the Windows command prompt:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/building-isis/setting-up-git.png"><img src="images/building-isis/setting-up-git.png" alt="setting up git" width="350px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Once git is installed, the two main command line tools to note are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>git</code> command line tool</p>
-</li>
-<li>
-<p><code>gitk</code> for viewing the commit history</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>If using Windows, note that github also have a dedicated <a href="https://help.github.com/articles/set-up-git">Windows client</a>. With a little <a href="http://haacked.com/archive/2012/05/30/using-github-for-windows-with-non-github-repositories.aspx">hacking around</a>, it can also be made to work with non-github repositories.</p>
-</div>
-<div class="paragraph">
-<p>If using Mac, you might also want to check out Atlassian&#8217;s <a href="http://www.atlassian.com/software/sourcetree/overview">Sourcetree</a>.</p>
-</div>
-<div class="sect3">
-<h4 id="_cloning_the_apache_isis_repo">Cloning the Apache Isis repo</h4>
-<div class="paragraph">
-<p>First, clone the Apache Isis repo.</p>
-</div>
-<div class="paragraph">
-<p>If you are a <strong>committer</strong>, then clone from the Apache read/write repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git clone https://git-wip-us.apache.org/repos/asf/isis.git</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If you are <strong>not a committer</strong>, please see the <a href="contributing.html">contributing</a> page for details on which repo to clone from.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_configuring_git">Configuring Git</h4>
-<div class="paragraph">
-<p>Next up is to configure your user name and password; see also <a href="https://git-wip-us.apache.org/">Apache&#8217;s git</a> docs:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git config user.name &quot;&lt;i&gt;My Name Here&lt;/i&gt;&quot;
-git config user.email &lt;i&gt;myusername@apache.org&lt;/i&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, configure the <code>core.autocrlf</code> so that line endings are normalized to LF (Unix style) in the rep; again see <a href="https://git-wip-us.apache.org/">Apache&#8217;s git</a> page:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>on Windows, use:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git config core.autocrlf true</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>on Mac/Linux, use:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git config core.autocrlf input</code></pre>
-</div>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>The Windows setting means that files are converted back to CRLF on checkout; the Mac/Linux setting means that the file is left as LF on checkout.</p>
-</div>
-<div class="paragraph">
-<p>We also recommend setting <code>core.safecrlf</code>, which aims to ensure that any line ending conversion is repeatable. Do this on all platforms:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git config core.safecrlf true</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Note that these settings are supplemented in the repo by the <code>.gitattributes</code> file and that explicitly specifies line handling treatment for most of the common file types that we have.</p>
-</div>
-<div class="paragraph">
-<p>Next, we recommend you setup this a refspec so that you can distinguish remote tags from local ones. To do that, locate the <code>[remote &quot;origin&quot;]</code> section in your <code>.git/config</code> and add the third entry shown below:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[remote &quot;origin&quot;]
-    url = ... whatever ...
-    fetch = ... whatever ...
-    fetch = +refs/tags/*:refs/tags/origin/*</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This will ensure that a <code>git fetch</code> or <code>git pull</code> places any remote tags under <code>origin/xxx.  For example, the`isis-1.0.0`tag on the origin will appear under`origin/isis-1.0.0</code>.</p>
-</div>
-<div class="paragraph">
-<p>If you don&#8217;t use git outside of Apache, you can add the <code>--global</code> flag so that the above settings apply for all repos managed by git on your PC.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_getting_help">Getting help</h3>
-<div class="paragraph">
-<p>Three commands of git that in particular worth knowing:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>git help <em>command</em></code><br></p>
-<div class="paragraph">
-<p>will open the man page in your web browser</p>
-</div>
-</li>
-<li>
-<p><code>git gui</code><br></p>
-<div class="paragraph">
-<p>will open up a basic GUI client to staging changes and making commits.</p>
-</div>
-</li>
-<li>
-<p><code>gitk --all</code><br></p>
-<div class="paragraph">
-<p>will open the commit history for all branches. In particular, you should be able to see the local <code>master</code>, which branch you are working on (the <code>HEAD</code>), and also the last known position of the <code>master</code> branch from the central repo, called <code>origin/master</code>.</p>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>You might also want to explore using a freely available equivalent such as <a href="https://www.sourcetreeapp.com/">Atlassian SourceTree</a>.</p>
-</div>
-<div class="paragraph">
-<p>For further reading, see:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="http://www.kernel.org/pub/software/scm/git/docs/git-config.html">git config man page</a></p>
-</li>
-<li>
-<p><a href="http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html">.gitattributes man page</a></p>
-</li>
-<li>
-<p><a href="http://git-scm.com/docs/gitattributes">.gitattributes git-scm.com docs</a></p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_installing_maven">Installing Maven</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Install Maven 3.0.x, downloadable <a href="http://maven.apache.org/download.html">here</a>.</p>
-</div>
-<div class="paragraph">
-<p>Set <code>MAVEN_OPTS</code> environment variable:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="ini">MAVEN_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=256m</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>Previously we suggested <code>128m</code> for the <code>MaxPermSize</code>, but that would no longer seem to be sufficient.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_building_all_of_apache_isis">Building all of Apache Isis</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>To build the source code from the command line, simply go to the root directory and type:</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>The first time you do this, you&#8217;ll find it takes a while since Maven needs to download all of the Apache Isis prerequisites.</p>
-</div>
-<div class="paragraph">
-<p>Thereafter you can speed up the build by adding the <code>-o</code> (offline flag):</p>
-</div>
-<div class="paragraph">
-<p>For the most part, though, you may want to rely on an IDE such as Eclipse to build the codebase for you. Both Eclipse and Idea (12.0+) support incremental background compilation.</p>
-</div>
-<div class="paragraph">
-<p>When using Eclipse, a Maven profile is configured such that Eclipse compiles to <code>target-ide</code> directory rather than the usual <code>target</code> directory. You can therefore switch between Eclipse and Maven command line without one interfering with the other.</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="#_git">Git</a>
-<ul class="sectlevel2">
-<li><a href="#_installation">Installation</a>
-<ul class="sectlevel3">
-<li><a href="#_cloning_the_apache_isis_repo">Cloning the Apache Isis repo</a></li>
-<li><a href="#_configuring_git">Configuring Git</a></li>
-</ul>
-</li>
-<li><a href="#_getting_help">Getting help</a></li>
-</ul>
-</li>
-<li><a href="#_installing_maven">Installing Maven</a></li>
-<li><a href="#_building_all_of_apache_isis">Building all of Apache Isis</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" === "Building Apache Isis") {
-        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>


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

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/release-process.html
----------------------------------------------------------------------
diff --git a/content/release-process.html b/content/release-process.html
deleted file mode 100644
index 9d81574..0000000
--- a/content/release-process.html
+++ /dev/null
@@ -1,2249 +0,0 @@
-<!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>Formal Release Process</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><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>This page details the process for formally releasing Isis modules.</p>
-</div>
-<div class="paragraph">
-<p>If you&#8217;ve done this before and just want the bare essentials, see this <a href="release-process-one-pager.html">one-pager</a>
-(that also parameterizes some of the steps listed here 'long-hand'. There is also an experimental
-<a href="resources/release.sh">script</a> for automating the latter part of the process.</p>
-</div>
-<div class="paragraph">
-<p>See also the <a href="release-checklist.html">release checklist</a> for keeping track of where you are while releasing (possibly multiple) components.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_intro">Intro</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Apache Isis consists of two separately releasable modules. Relative to the root of the
-<a href="https://git-wip-us.apache.org/repos/asf/isis/repo?p=isis.git;a=tree">source code repo</a>, these are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>core</code></p>
-</li>
-<li>
-<p><code>component/example/archetypes/simpleapp</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Previously there were many other components, but these have either been mothballed or moved into core. The only
-remaining component that is not in core (though has not yet been released) is <code>component/viewer/scimpi</code>. There is
-currently no plan to release this component.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_process_prerequisites">Process Prerequisites</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before releasing <code>core</code>, ensure there is consensus on the <a href="../support.html">dev mailing list</a> that this is the right
-time for a release. The discussion should include confirming the version number to be used, and to confirm content.</p>
-</div>
-<div class="paragraph">
-<p>Once agreed, the formal release can begin. The steps are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>create a branch locally in which to prepare the release</p>
-</li>
-<li>
-<p>use <code>mvn release:prepare</code> to generate the signed artifacts and create a tag in the source code control system</p>
-</li>
-<li>
-<p>use <code>mvn release:perform</code> to upload the signed artifacts to the Apache staging repository</p>
-</li>
-<li>
-<p>vote on the staged artifacts (in particular, the signed source release ZIP from which the remaining artifacts are derivable)</p>
-</li>
-<li>
-<p>on a successful vote:</p>
-</li>
-<li>
-<p>promote the staged artifacts</p>
-</li>
-<li>
-<p>distribute the source zip</p>
-</li>
-<li>
-<p>merge in the branch back to into master</p>
-</li>
-<li>
-<p>on a failed vote:</p>
-</li>
-<li>
-<p>drop the staging repository</p>
-</li>
-<li>
-<p>delete the branch and tag</p>
-</li>
-<li>
-<p>fix the problems and go round round the loop again.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Before any of this can happen, there are a number of prerequisites, in terms of (a) the codebase itself,
-(b) the community process, and (c) the committer acting as release manager and performing the release.</p>
-</div>
-<div class="sect2">
-<h3 id="_set_up_local_environment">Set up local environment</h3>
-<div class="sect3">
-<h4 id="_public_private_key">Public/private key</h4>
-<div class="paragraph">
-<p>The most important configuration you require is to set up public/private key pair. This is used by the <code>maven-release-plugin</code> to sign the code artifacts. See the page on <a href="key-generation.html">key generation</a> for more details.</p>
-</div>
-<div class="paragraph">
-<p>In order to prepare the release, you&#8217;ll (need to) have a <code>~/.gnupg</code> directory with the relevant files (<code>gpg.conf</code>, <code>pubring.gpg</code>, <code>secring.gpg</code> etc), and have <code>gpg</code> on your operating system PATH.</p>
-</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>If on Windows, the equivalent directory is <code>c:\users\xxx\appdata\roaming\gnupg</code>. For <code>gpg</code>, use either <a href="http://cygwin.com">cygwin.com</a> or <a href="http://www.gpg4win.org">gpg4win.org</a>. Note also that the mSysGit version of <code>gpg</code> (as provided by GitHub&#8217;s bash client) is not compatible with that provided by cygwin; move it to one side and check that <code>gpg.exe</code> being used is that from gpg4win.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_maven_code_settings_xml_code">Maven <code>settings.xml</code></h4>
-<div class="paragraph">
-<p>During the release process the <code>maven-deploy-plugin</code> uploads the generated artifacts to a staging repo on the <a href="http://repository.apache.org">Apache repository manager</a>. This requires your Apache LDAP credentials to be specified in your <code>~/.m2/settings.xml</code> file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;settings&gt;</span>
-  <span class="tag">&lt;servers&gt;</span>
-    <span class="tag">&lt;server&gt;</span>
-      <span class="tag">&lt;id&gt;</span>apache.releases.https<span class="tag">&lt;/id&gt;</span>
-      <span class="tag">&lt;username&gt;</span>xxxxxxx<span class="tag">&lt;/username&gt;</span>
-      <span class="tag">&lt;password&gt;</span>yyyyyyy<span class="tag">&lt;/password&gt;</span>
-    <span class="tag">&lt;/server&gt;</span>
-    ...
-  <span class="tag">&lt;/servers&gt;</span>
-  ...
-<span class="tag">&lt;/settings&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>xxxxxxx</code> and <code>yyyyyyy</code> are your Apache LDAP username and password. For more information, see these <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">ASF docs</a>.</p>
-</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>It is also possible to configure to use <code>.ssh</code> secure keys, and thereby avoid hardcoding your Apache LDAP password into your <code>.m2/settings.xml</code> file. A description of how to do this can be found, for example, <a href="http://bval.apache.org/release-setup.html">here</a>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Also, set up keyphrase for <code>gpg</code>; this avoids being prompted during release:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;profiles&gt;</span>
-  <span class="tag">&lt;profile&gt;</span>
-    <span class="tag">&lt;id&gt;</span>gpg<span class="tag">&lt;/id&gt;</span>
-    <span class="tag">&lt;properties&gt;</span>
-      <span class="tag">&lt;gpg.executable&gt;</span>gpg2<span class="tag">&lt;/gpg.executable&gt;</span>
-      <span class="tag">&lt;gpg.passphrase&gt;</span>this is not really my passphrase<span class="tag">&lt;/gpg.passphrase&gt;</span>
-    <span class="tag">&lt;/properties&gt;</span>
-  <span class="tag">&lt;/profile&gt;</span>
-  ...
-<span class="tag">&lt;/profiles&gt;</span>
-
-<span class="tag">&lt;activeProfiles&gt;</span>
-  <span class="tag">&lt;activeProfile&gt;</span>gpg<span class="tag">&lt;/activeProfile&gt;</span>
-  ...
-<span class="tag">&lt;/activeProfiles&gt;</span></code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_pull_down_code_to_release">Pull down code to release</h4>
-<div class="paragraph">
-<p>Set the HEAD of your local git repo to the commit to be released. In many cases this will be the tip of the origin&#8217;s <code>master</code> branch:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout master
-git pull --ff-only</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, determine/confirm the version number of the module being released. This should be in line with our <a href="versioning-policy.html">semantic versioning policy</a>.</p>
-</div>
-<div class="paragraph">
-<p>Next, create a release branch in your local Git repo, using the version number determined and as per <a href="release-branch-and-tag-names.html">these standards</a>. For example, to prepare release candidate #1 for a release 1.9.0 of <code>core</code>, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout -b isis-1.9.0</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>All release preparation is done locally; if we are successful, this branch will be pushed back to master.</p>
-</div>
-<div class="paragraph">
-<p>Finally, make sure you have a JIRA ticket open against which to perform all commits.</p>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_set_environment_variables">Set Environment Variables</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If you are releasing <code>core</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd core
-
-export ISISTMP=/c/tmp              # or whatever
-export ISISART=isis
-export ISISDEV=1.10.0-SNAPSHOT
-export ISISREL=1.9.0
-export ISISRC=RC1
-
-export ISISCOR=&quot;Y&quot;
-env | grep ISIS | sort</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_code_prerequisites">Code Prerequisites</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>{note
-Unless otherwise stated, you should assume that all remaining steps should be performed in the base directory of the module being released.
-}</p>
-</div>
-<div class="paragraph">
-<p>Before making any formal release, there are a number of prerequisites that should always be checked.</p>
-</div>
-<div class="sect2">
-<h3 id="_update_the_version_number">Update the version number</h3>
-<div class="paragraph">
-<p>The version number of the parent pom should reflect the branch name that you are now on (with a <code>-SNAPSHOT</code> suffix). In many cases this will have been done already during earlier development; but confirm that it has been updated. If it has not, make the change.</p>
-</div>
-<div class="paragraph">
-<p>For example, if releasing <code>core</code> version <code>1.9.0</code>, the POM should read:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;groupId&gt;</span>org.apache.isis.core<span class="tag">&lt;/groupId&gt;</span>
-<span class="tag">&lt;artifactId&gt;</span>isis<span class="tag">&lt;/artifactId&gt;</span>
-<span class="tag">&lt;version&gt;</span>1.9.0<span class="tag">&lt;/version&gt;</span></code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_parent_apache_isis_core">Update parent (Apache Isis Core)</h3>
-<div class="paragraph">
-<p>If releasing Apache Isis Core, check (via <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache%22%20a%3A%22apache%22">search.maven.org</a>) whether there is a newer version of the Apache parent <code>org.apache:apache</code>.</p>
-</div>
-<div class="paragraph">
-<p>If there is, update the <code>&lt;version&gt;</code> in the <code>&lt;parent&gt;</code> element in the parent POM to match the newer version:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;parent&gt;</span>
-    <span class="tag">&lt;groupId&gt;</span>org.apache<span class="tag">&lt;/groupId&gt;</span>
-    <span class="tag">&lt;artifactId&gt;</span>apache<span class="tag">&lt;/artifactId&gt;</span>
-    <span class="tag">&lt;version&gt;</span>NN<span class="tag">&lt;/version&gt;</span>
-    <span class="tag">&lt;relativePath</span> <span class="tag">/&gt;</span>
-<span class="tag">&lt;/parent&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>NN</code> is the updated version number.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_check_no_snapshot_dependencies">Check no SNAPSHOT dependencies</h3>
-<div class="paragraph">
-<p>There should be no snapshot dependencies; the only mention of <code>SNAPSHOT</code> should be for the Isis modules about to be released.</p>
-</div>
-<div class="paragraph">
-<p>As a quick check, do a grep for <code>SNAPSHOT</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">grep SNAPSHOT `/bin/find . -name pom.xml | grep -v target | sort`</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Or, for a more thorough check, load up each <code>pom.xml</code> and inspect manually:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">vi `/bin/find . -name pom.xml | grep -v target | sort`</code></pre>
-</div>
-</div>
-<div class="olist lowerroman">
-<ol class="lowerroman" type="i">
-<li>
-<p>and search for <code>SNAPSHOT</code>.</p>
-</li>
-</ol>
-</div>
-<div class="admonitionblock tip">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Obviously, don&#8217;t update Apache Isis' <code>SNAPSHOT</code> references; these get updated by the <code>mvn release:prepare</code> command we run later.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_plugin_versions">Update plugin versions</h3>
-<div class="paragraph">
-<p>The <code>maven-versions-plugin</code> should be used to determine if there are newer versions of any of the plugins used to build Apache Isis. Since this goes off to the internet, it may take a minute or two to run:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn versions:display-plugin-updates &gt; /tmp/foo
-grep &quot;\-&gt;&quot; /tmp/foo | /bin/sort -u</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Review the generated output and make updates as you see fit. (However, if updating, please check by searching for known issues with newer versions).</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_dependency_versions">Update dependency versions</h3>
-<div class="paragraph">
-<p>The <code>maven-versions-plugin</code> should be used to determine if there are newer versions of any of Isis' dependencies. Since this goes off to the internet, it may take a minute or two to run:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn versions:display-dependency-updates &gt; /tmp/foo
-grep &quot;\-&gt;&quot; /tmp/foo | /bin/sort -u</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Update any of the dependencies that are out-of-date. That said, do note that some dependencies may show up with a new dependency, when in fact the dependency is for an old, badly named version. Also, there may be new dependencies that you do not wish to move to, eg release candidates or milestones.</p>
-</div>
-<div class="paragraph">
-<p>For example, here is a report showing both of these cases:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[INFO]   asm:asm ..................................... 3.3.1 -&gt; 20041228.180559
-[INFO]   commons-httpclient:commons-httpclient .......... 3.1 -&gt; 3.1-jbossorg-1
-[INFO]   commons-logging:commons-logging ......... 1.1.1 -&gt; 99.0-does-not-exist
-[INFO]   dom4j:dom4j ................................. 1.6.1 -&gt; 20040902.021138
-[INFO]   org.datanucleus:datanucleus-api-jdo ................ 3.1.2 -&gt; 3.2.0-m1
-[INFO]   org.datanucleus:datanucleus-core ................... 3.1.2 -&gt; 3.2.0-m1
-[INFO]   org.datanucleus:datanucleus-jodatime ............... 3.1.1 -&gt; 3.2.0-m1
-[INFO]   org.datanucleus:datanucleus-rdbms .................. 3.1.2 -&gt; 3.2.0-m1
-[INFO]   org.easymock:easymock ................................... 2.5.2 -&gt; 3.1
-[INFO]   org.jboss.resteasy:resteasy-jaxrs ............. 2.3.1.GA -&gt; 3.0-beta-1</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>For these artifacts you will need to search <a href="http://search.maven.org">Maven central repo</a> directly yourself to confirm there are no newer dependencies not shown in this list.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_code_cleanup_formatting">Code cleanup / formatting</h3>
-<div class="paragraph">
-<p>Make sure that all source code has been cleaned up and formatted according to the Apache Isis and ASF conventions. Use <a href="resources/Apache-code-style-formatting.xml">this</a> Eclipse template and <a href="resources/isis.importorder">this</a> import order.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_license_header_notices_rat_tool">License header notices (RAT tool)</h3>
-<div class="paragraph">
-<p>The Apache Release Audit Tool <code>RAT</code> (from the <a href="http://creadur.apache.org">Apache Creadur</a> project) checks for missing license header files. The parent <code>pom.xml</code> of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions.</p>
-</div>
-<div class="paragraph">
-<p>To run the RAT tool, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=50 -o</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>rat.numUnapprovedLicenses</code> property is set to a high figure, temporarily overriding the default value of 0. This will allow the command to run over all submodules, rather than failing after the first one.</p>
-</div>
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Do <em>not</em> use <code>mvn rat:check</code>; depending on your local Maven configuratoin this may bring down the obsolete <code>mvn-rat-plugin</code> from the Codehaus repo.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>All being well the command should complete. For each failing submodule, it will have written out a <code>target\rat.txt</code>; missing license notes are indicated using the key <code>!???</code>. You can collate these together using something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Investigate and fix any reported violations, typically by either:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>adding genuinely missing license headers from Java (or other) source files, or</p>
-</li>
-<li>
-<p>updating the <code>&lt;excludes&gt;</code> element for the <code>apache-rat-plugin</code> plugin to ignore test files, log files and any other non-source code files</p>
-</li>
-<li>
-<p>also look to remove any stale <code>&lt;exclude&gt;</code> entries</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>To add missing headers, you can if you wish use the groovy script <code>addmissinglicenses.groovy</code> (in the <code>scripts</code> directory) to automatically insert missing headers for certain file types. The actual files checked are those with extensions specified in the line <code>def fileEndings = [&quot;.java&quot;, &quot;.htm&quot;]</code>:</p>
-</div>
-<div class="paragraph">
-<p>Run this in dry run mode first (shown here relative to the <code>core</code> module):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">groovy ../scripts/addmissinglicenses.groovy</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>When happy, perform the updates by specifying the <code>-x</code> (execute) flag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">groovy addmissinglicenses.groovy -x</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Once you&#8217;ve fixed all issues, confirm once more that <code>apache-rat-plugin</code> no longer reports any license violations, this time leaving the <code>rat.numUnapprovedLicenses</code> property to its default, 0:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=0 -o
-for a in `find . -name rat.txt -print`; do grep '!???' $a; done</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_missing_license_check">Missing License Check</h3>
-<div class="paragraph">
-<p>Although Apache Isis has no dependencies on artifacts with incompatible licenses, the POMs for some of these dependencies (in the Maven central repo) do not necessarily contain the required license information. Without appropriate additional configuration, this would result in the generated <code>DEPENDENCIES</code> file and generated Maven site indicating dependencies as having "unknown" licenses.</p>
-</div>
-<div class="paragraph">
-<p>Fortunately, Maven allows the missing information to be provided by configuring the <code>maven-remote-resources-plugin</code>. This is stored in the <code>src/main/appended-resources/supplemental-models.xml</code> file, relative to the root of each releasable module.</p>
-</div>
-<div class="paragraph">
-<p>To capture the missing license information, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn license:download-licenses</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This Maven plugin creates a <code>license.xml</code> file in the <code>target/generated-resources</code> directory of each module.</p>
-</div>
-<div class="paragraph">
-<p>Then, run the following script (shown here relative to the <code>core</code> module).</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">groovy ../scripts/checkmissinglicenses.groovy</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This searches for all <code>licenses.xml</code> files, and compares them against the contents of the <code>supplemental-models.xml</code> file. For example, the output could be something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">licenses to add to supplemental-models.xml:
-
-[org.slf4j, slf4j-api, 1.5.7]
-[org.codehaus.groovy, groovy-all, 1.7.2]
-
-licenses to remove from supplemental-models.xml (are spurious):
-
-[org.slf4j, slf4j-api, 1.5.2]</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If any missing entries are listed or are spurious, then update <code>supplemental-models.xml</code> and try again.</p>
-</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>Ignore any missing license warnings for the TCK modules; this is a result of the TCK modules for the viewers (eg <code>isis-viewer-bdd-concordion-tck</code>) depending on the TCK dom, fixtures etc.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_sanity_check">Sanity check</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before you cut the release, perform one last sanity check on the codebase.</p>
-</div>
-<div class="sect2">
-<h3 id="_sanity_check_for_code_core_code">Sanity check for <code>core</code></h3>
-<div class="paragraph">
-<p>First, check that there are <em>NO SNAPSHOT</em> dependencies in any of the <code>pom.xml</code> of the modules of the core.</p>
-</div>
-<div class="paragraph">
-<p>Next, delete all Isis artifacts from your local Maven repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, check that <code>core</code> builds independently, using the <code>-o</code> offline flag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn clean install -o</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Confirm that the versions of the Isis artifacts now cached in your local repository are correct.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_sanity_check_for_non_code_core_code_components">Sanity check for non-<code>core</code> components</h3>
-<div class="paragraph">
-<p>You should already have changed the parent POM of the releasable module to reference a released version of <code>org.apache.isis.core:isis</code>. Now, also check that there are remaining <em>NO SNAPSHOT</em> dependencies in any of the <code>pom.xml</code> of the modules of the component.</p>
-</div>
-<div class="paragraph">
-<p>Next, delete all Isis artifacts from your local Maven repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, build the component, though without the offline flag. Maven should pull down the component&#8217;s dependencies from the Maven central repo, including the non-spshot of Apache Isis core:</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>Confirm that the versions of the Isis artifacts now cached in your local repository are correct (both those pulled down from Maven central repo, as well as those of the component built locally). The versions of <code>core</code> should not be a SNAPSHOT.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_commit_changes">Commit changes</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before going any further, remember to commit any changes from the preceding steps:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git commit -am &quot;ISIS-nnn: updates to pom.xml etc for release&quot;</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_preparing_a_release_code_mvn_release_prepare_code">Preparing a Release (<code>mvn release:prepare</code>)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Most of the work is done using the <code>mvn release:prepare</code> goal. Since this makes a lot of changes, we run it first in "dry run" mode; only if that works do we run the goal for real.</p>
-</div>
-<div class="sect2">
-<h3 id="_dry_run">Dry-run</h3>
-<div class="paragraph">
-<p>Run the dry-run as follows:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:prepare -P apache-release -D dryRun=true \
-    -DreleaseVersion=$ISISREL \
-    -Dtag=$ISISART-$ISISREL \
-    -DdevelopmentVersion=$ISISDEV</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>releaseVersion</code> just strip off the <code>-SNAPSHOT</code> suffix:</p>
-</li>
-<li>
-<p><code>tag</code> should follow our <a href="release-branch-and-tag-names.html">standard</a> (concatenation of the <code>artifactId</code> and the version entered above <em>without a <code>-RCn</code> suffix</em>)</p>
-</li>
-<li>
-<p><code>developmentVersion</code> should increment as required, and have <code>-SNAPSHOT</code> appended.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>This is not quite fully automated; you may be prompted for the gpg passphrase. (Experiments in using <code>--batch-mode -Dgpg.passphrase=&quot;&#8230;&#8203;&quot;</code> to fully automate this didn&#8217;t work; for more info, see <a href="http://maven.apache.org/plugins/maven-gpg-plugin/sign-mojo.html">here</a> (maven release plugin docs) and <a href="http://maven.apache.org/maven-release/maven-release-plugin/examples/non-interactive-release.html">here</a> (maven gpg plugin docs).</p>
-</div>
-<div class="paragraph">
-<p>Or, if you want to be prompted for the versions, you can omit the properties, eg:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:prepare -P apache-release -D dryRun=true</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Some modules might have additional profiles to be activated. For example, the (now mothballed) SQL ObjectStore required <code>-P apache-release,integration-tests</code> so that its integration tests are also run.</p>
-</div>
-<div class="paragraph">
-<p>This should generate something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">$ mvn release:prepare -P apache-release -D dryRun=true
-[INFO] Scanning for projects...
-[INFO] ------------------------------------------------------------------------
-[INFO] Reactor Build Order:
-[INFO]
-[INFO] Apache Isis Core
-[INFO] Apache Isis Core AppLib
-[INFO] Apache Isis Core Unit Test Support
-[INFO] Apache Isis Core MetaModel
-[INFO] Apache Isis Core Runtime
-[INFO] Apache Isis Core WebServer
-       ...
-[INFO] Apache Isis Core Integration Testing Support
-[INFO]
-[INFO] ------------------------------------------------------------------------
-[INFO] Building Apache Isis Core 1.9.0
-[INFO] ------------------------------------------------------------------------
-[INFO]
-[INFO] --- maven-release-plugin:2.3.2:prepare (default-cli) @ isis ---
-[INFO] Resuming release from phase 'map-release-versions'
-What is the release version for &quot;Apache Isis Core&quot;? (org.apache.isis.core:isis)
-1.9.0: :</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If you didn&#8217;t provide the <code>releaseVersion</code>, <code>tag</code> and <code>developmentVersion</code> tags, then you&#8217;ll be prompted for them. You can generally accept the defaults that Maven offers.</p>
-</div>
-<div class="paragraph">
-<p>Assuming this completes successfully, re-run the command, but without the <code>dryRun</code> flag and specifying <code>resume=false</code> (to ignore the generated <code>release.properties</code> file that gets generated as a side-effect of using <code>git</code>). You can also set the <code>skipTests</code> flag since they would have been run during the previous dry run:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:prepare -P apache-release -D resume=false -DskipTests=true
-        -DreleaseVersion=$ISISREL \
-        -Dtag=$ISISART-$ISISREL \
-        -DdevelopmentVersion=$ISISDEV</code></pre>
-</div>
-</div>
-<div class="admonitionblock tip">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>If any issues here, then explicitly delete the generated <code>release.properties</code> file first.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_post_prepare_sanity_check">Post-prepare sanity check</h3>
-<div class="paragraph">
-<p>You should end up with artifacts in your local repo with the new version <code>1.9.0</code>. There are then a couple of sanity checks that you can perform:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>unzip the source-release ZIP and check it builds.<br></p>
-<div class="paragraph">
-<p>For example, if building core, then the ZIP file will be called <code>isis-1.9.0-source-release.zip</code> and should reside in <code>~/.m2/repository/org/apache/isis/core/isis/1.9.0</code> directory.<br></p>
-</div>
-<div class="paragraph">
-<p>Unzip in a new directory, and build.</p>
-</div>
-</li>
-<li>
-<p>Inspect the <code>DEPENDENCIES</code> file.<br></p>
-<div class="paragraph">
-<p>This file should be in the root of the extracted ZIP. In particular, check that there are no category-x dependencies.</p>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>If you find problems and the release was performed on a branch, then just delete the branch and start over.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_upload_release_for_voting">Upload Release for Voting</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Once the release has been built locally, it should be uploaded for voting. This is done by deploying the Maven artifacts to a staging directory (this includes the source release ZIP file which will be voted upon).</p>
-</div>
-<div class="paragraph">
-<p>The Apache staging repository runs on Nexus server, hosted at <a href="https://repository.apache.org">repository.apache.org</a>. The process of uploading will create a staging repository that is associated with the host (IP address) performing the release. Once the repository is staged, the newly created staging repository is "closed" in order to make it available to others.</p>
-</div>
-<div class="paragraph">
-<p>Before you start, make sure you&#8217;ve defined the staging repo in your local <code>~/.m2/settings.xml</code> file (see earlier on this page).</p>
-</div>
-<div class="sect2">
-<h3 id="_perform_the_release">Perform the Release</h3>
-<div class="paragraph">
-<p>If running on *nix, then the command to stage the release is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:perform -P apache-release</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>but if using mSysGit on windows, specify a different working directory:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:perform -P apache-release \
-    -DworkingDirectory=$ISISTMP/$ISISART-$ISISREL/checkout</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>You may (again) be prompted for gpg passphrase.</p>
-</div>
-<div class="paragraph">
-<p>The command starts off by checking out the codebase from the tag (hence different working directory under Windows to avoid 260 char path limit). It then builds the artifacts, then uploads them to the Apache staging repository:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">...
-[INFO] --- maven-release-plugin:2.3.2:perform (default-cli) @ isis ---
-[INFO] Performing a LOCAL checkout from scm:git:file:///C:\APACHE\isis-git-rw\co
-re
-[INFO] Checking out the project to perform the release ...
-[INFO] Executing: cmd.exe /X /C &quot;git clone --branch isis-1.9.0 file:///C:\APACHE\isis-git-rw\core C:\APACHE\isis-git-rw\core\target\checkout&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target
-[INFO] Performing a LOCAL checkout from scm:git:file:///C:\APACHE\isis-git-rw
-[INFO] Checking out the project to perform the release ...
-[INFO] Executing: cmd.exe /X /C &quot;git clone --branch isis-1.9.0 file:///C:\APACHE\isis-git-rw C:\APACHE\isis-git-rw\core\target\checkout&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target
-[INFO] Executing: cmd.exe /X /C &quot;git ls-remote file:///C:\APACHE\isis-git-rw&quot;
-[INFO] Working directory: C:\Users\ADMINI~1\AppData\Local\Temp
-[INFO] Executing: cmd.exe /X /C &quot;git fetch file:///C:\APACHE\isis-git-rw&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target\checkout
-[INFO] Executing: cmd.exe /X /C &quot;git checkout isis-1.9.0&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target\checkout
-[INFO] Executing: cmd.exe /X /C &quot;git ls-files&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target\checkout
-[INFO] Invoking perform goals in directory C:\APACHE\isis-git-rw\core\target\checkout\core
-[INFO] Executing goals 'deploy'...
-...</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>All being well this command will complete successfully. Given that it is uploading code artifacts, it could take a while to complete.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_check_the_repository">Check the Repository</h3>
-<div class="paragraph">
-<p>If the <code>mvn release:perform</code> has worked then it will have put release artifacts into a newly created staging repository .</p>
-</div>
-<div class="paragraph">
-<p>Log onto <a href="http://repository.apache.org">repository.apache.org</a> (using your ASF LDAP account):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-0.png"><img src="images/release-process/nexus-staging-0.png" alt="nexus staging 0" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>And then check that the release has been staged (select <code>staging repositories</code> from left-hand side):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-1.png"><img src="images/release-process/nexus-staging-1.png" alt="nexus staging 1" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>If nothing appears in a staging repo you should stop here and work out why.</p>
-</div>
-<div class="paragraph">
-<p>Assuming that the repo has been populated, make a note of its repo id; this is needed for the voting thread. In the screenshot above the id is <code>org.apache.isis-008</code>.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_close_the_repository">Close the Repository</h3>
-<div class="paragraph">
-<p>After checking that the staging repository contains the artifacts that you expect you should close the staging repository. This will make it available so that people can check the release.</p>
-</div>
-<div class="paragraph">
-<p>Press the Close button and complete the dialog:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-2.png"><img src="images/release-process/nexus-staging-2.png" alt="nexus staging 2" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Nexus should start the process of closing the repository.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-2a.png"><img src="images/release-process/nexus-staging-2a.png" alt="nexus staging 2a" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>All being well, the close should (eventually) complete successfully (keep hitting refresh):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-3.png"><img src="images/release-process/nexus-staging-3.png" alt="nexus staging 3" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>The Nexus repository manager will also email you with confirmation of a successful close.</p>
-</div>
-<div class="paragraph">
-<p>If Nexus has problems with the key signature, however, then the close will be aborted:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-4.png"><img src="images/release-process/nexus-staging-4.png" alt="nexus staging 4" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Use <code>gpg --keyserver hkp://pgp.mit.edu --recv-keys nnnnnnnn</code> to confirm that the key is available.</p>
-</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>Unfortunately, Nexus does not seem to allow subkeys to be used for signing. See <a href="key-generation.html">Key Generation</a> for more details.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_push_changes">Push changes</h3>
-<div class="paragraph">
-<p>Finally, push both the branch and the tag created locally to the central origin server. For the tag, we append an <code>-RCn</code> suffix until the vote succeeds.</p>
-</div>
-<div class="paragraph">
-<p>To push the branch, for example:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout prepare/$ISISART-$ISISREL
-git push -u origin prepare/$ISISART-$ISISREL</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To push the tag, with the <code>-RCn</code> suffix, for example:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin refs/tags/$ISISART-$ISISREL:refs/tags/$ISISART-$ISISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The remote tag isn&#8217;t visible locally (eg via <code>gitk --all</code>), but can be seen <a href="https://git-wip-us.apache.org/repos/asf/isis/repo?p=isis.git;a=summary">online</a>.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_voting">Voting</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Once the artifacts have been uploaded, you can call a vote.</p>
-</div>
-<div class="paragraph">
-<p>In all cases, votes last for 72 hours and require a +3 (binding) vote from members.</p>
-</div>
-<div class="sect2">
-<h3 id="_start_voting_thread_on_a_href_mailto_e_p_e_g_e_p_e_g_a">Start voting thread on <a href="mailto:&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g">&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g</a></h3>
-<div class="paragraph">
-<p>The following boilerplate is for a release of the Apache Isis Core. Adapt as required:</p>
-</div>
-<div class="paragraph">
-<p>Use the following subject:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[VOTE] Apache Isis Core release 1.8.0 RC1</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>And use the following body:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">I've cut a release for Apache Isis Core and the simpleapp archetype:
-* Core 1.8.0
-* SimpleApp Archetype 1.8.0
-
-The source code artifacts have been uploaded to staging repositories on repository.apache.org:
-
-* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/core/isis/1.9.0/isis-1.9.0-source-release.zip
-* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/archetype/simpleapp-archetype/1.9.0/simpleapp-archetype-1.9.0-source-release.zip
-
-For each zip there is a corresponding signature file (append .asc to the zip's url).
-
-In the source code repo the code has been tagged as isis-1.8.0-RC1 and simpleapp-archetype-1.8.0-RC1.
-
-For instructions on how to verify the release (build from binaries and/or use in Maven directly), see http://isis.apache.org/contributors/verifying-releases.html
-
-Please verify the release and cast your vote.  The vote will be open for a minimum of 72 hours.
-
-[ ] +1
-[ ]  0
-[ ] -1</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Remember to update:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>the version number (1.9.0 or whatever)</p>
-</li>
-<li>
-<p>the release candidate number (<code>RC1</code> or whatever)</p>
-</li>
-<li>
-<p>the repository id, as provided by Nexus earlier (<code>orgapacheisis-10xx</code> or whatever)</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Note that the email also references the procedure for other committers to <a href="verifying-releases.html">verify the release</a>.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_after_the_vote">After the vote</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Once the vote has completed, post the results to the isis-dev mailing list.</p>
-</div>
-<div class="paragraph">
-<p>For example, use the following subject for a vote on Apache Isis Core:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[RESULT] [VOTE] Apache Isis Core release 1.9.0</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>using the body (alter last line as appropriate):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">The vote has completed with the following result :
-
-  +1 (binding): &lt;i&gt;list of names&lt;/i&gt;
-  +1 (non binding): &lt;i&gt;list of names&lt;/i&gt;
-
-  -1 (binding): &lt;i&gt;list of names&lt;/i&gt;
-  -1 (non binding): &lt;i&gt;list of names&lt;/i&gt;
-
-The vote is (UN)SUCCESSFUL.</code></pre>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_for_a_successful_vote">For a successful vote</h3>
-<div class="paragraph">
-<p>If the vote has been successful, then replace the <code>-RCn</code> tag with another without the qualifier.</p>
-</div>
-<div class="paragraph">
-<p>You can do this using the <code>scripts/promoterctag.sh</code> script; for example:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">sh scripts/promoterctag isis-1.9.0 RC1    # $ISISART-$SISREL $ISISRC</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Or, if you like to execute the steps in that script by hand:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>add the new remote tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin refs/tags/isis-1.9.0:refs/tags/isis-1.9.0
-git fetch</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the <code>-RCn</code> remote tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete refs/tags/isis-1.9.0-RC1 # $ISISART-$SISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the <code>-RCn</code> local tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git tag -d isis-1.9.0-RC1 # $ISISART-$SISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Then, continue onto the next section for the steps to promote and announce the release.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_for_an_unsuccessful_vote">For an unsuccessful vote</h3>
-<div class="paragraph">
-<p>If the vote has been unsuccessful, then:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>delete the remote branch, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete isis-1.9.0 # $ISISART-$SISREL</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete your local branch, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git branch -D isis-1.9.0 # $ISISART-$SISREL</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the remote origin server&#8217;s tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete refs/tags/isis-1.9.0-RC1</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the tag that was created locally, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git tag -d isis-1.9.0 # $ISISART-$SISREL</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>drop the staging repository in <a href="http://repository.apache.org">Nexus</a></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Address the problems identified in the vote, and go again.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_promoting_release_to_distribution">Promoting Release to Distribution</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_release_binaries_to_maven_central_repo">Release Binaries to Maven Central Repo</h3>
-<div class="paragraph">
-<p>From the Nexus pages, select the staging repository and select 'release' from the top menu.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-release-1.png"><img src="images/release-process/nexus-release-1.png" alt="nexus release 1" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>This moves the release artifacts into an Apache releases repository; from there they will be automatically moved to the Maven repository.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_release_source_zip">Release Source Zip</h3>
-<div class="paragraph">
-<p>As described in the <a href="http://www.apache.org/dev/release-publishing.html#distribution_dist">Apache documentation</a>, each Apache TLP has a <code>release/TLP-name</code> directory in the distribution Subversion repository at <a href="https://dist.apache.org/repos/dist">https://dist.apache.org/repos/dist</a>. Once a release vote passes, the release manager should <code>svn add</code> the artifacts (plus signature and hash files) into this location. The release is then automatically pushed to <a href="http://www.apache.org/dist/">http://www.apache.org/dist/</a> by <code>svnpubsub</code>. Only the most recent release of each supported release line should be contained here, old versions should be deleted.</p>
-</div>
-<div class="paragraph">
-<p>Each project is responsible for the structure of its directory. The directory structure of Apache Isis reflects the directory structure in our git source code repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>isis/
-  core/
-  component/
-    objectstore/  # empty, JDO now part of core
-    security/     # empty, Shiro now part of core
-    viewer/       # empty, Restful and Wicket viewers now part of core
-  example/
-    archetype/
-      simpleapp/
-  tool/
-    maven-isis-plugin/   # not yet released</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If necessary, checkout this directory structure:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">svn co https://dist.apache.org/repos/dist/release/isis isis-dist</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, add the new release into the appropriate directory, and delete any previous release. You can use <a href="upd_sh">the upd.sh script</a> to help; this downloads the artefacts from the Nexus release repository, adds the artefacts to subsversion and deletes the previous version.</p>
-</div>
-<div class="paragraph">
-<p>At the end, commit the changes:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>svn commit -m "publishing isis source releases to dist.apache.org"</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_update_jira_and_generate_release_notes">Update JIRA and generate Release notes</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_close_all_jira_tickets_for_the_release">Close All JIRA tickets for the release</h3>
-<div class="paragraph">
-<p>Close all JIRA tickets for the release, or moved to future releases if not yet addressed. Any tickets that were partially implemented should be closed, and new tickets created for the functionality on the ticket not yet implemented.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_generate_release_notes_in_jira">Generate Release Notes in JIRA</h3>
-<div class="paragraph">
-<p>Use JIRA to <a href="http://confluence.atlassian.com/display/JIRA/Creating+Release+Notes">generate release notes</a>:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/jira-create-release-notes.png"><img src="images/release-process/jira-create-release-notes.png" alt="jira create release notes" width="400px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>&lt;img src="resources/jira-create-release-notes.png" width="400px"&gt;&lt;/img&gt;</p>
-</div>
-<div class="paragraph">
-<p>If any of the tickets closed are tasks/subtasks, then please edit the contents of the file to associate them back together again.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_mark_the_jira_versions_as_released">Mark the JIRA versions as released</h3>
-<div class="paragraph">
-<p>In JIRA, go to the administration section for the Apache Isis project and update the versions as released.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_isis_website">Update ISIS website</h3>
-<div class="paragraph">
-<p>Update the Apache Isis CMS website:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Using the JIRA-generated release notes as a guide, update the relevant page of the Apache Isis site.<br></p>
-<div class="paragraph">
-<p>Use this regex to convert links.  From:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">&lt;li&gt;\[&lt;a href='(.+)?'&gt;(.+?)&lt;\/a&gt;\].*-[\s]*(.*)$</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>to:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">* link:$1[$2] - $3</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>and use this regex to convert headings.  From:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">&lt;h2&gt;\s+(\S+)\n&lt;/h2&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>to:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">=== $1</code></pre>
-</div>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Typically this be will a new page in the core section or for one of the components. Make a note of the URL of this new page (for use in the mailing list announcement).</p>
-</div>
-<div class="paragraph">
-<p>For example, a new release of Apache Isis Core would require:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Do a search for <code>x.y.0-SNAPSHOT</code> and replace with <code>x.y.0</code></p>
-</li>
-<li>
-<p>Update the version number on the <a href="./index.html">home (index)</a> pages.</p>
-</li>
-<li>
-<p>Update the version number on the <a href="./simpleapp-archetype.html">simpleapp archetype</a> pages.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>In addition:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Update the <a href="./download.html">download page</a> with a link to the source release zip file (under <a href="https://dist.apache.org/repos/dist/release/isis">https://dist.apache.org/repos/dist/release/isis</a>)</p>
-</li>
-<li>
-<p>The <a href="./doap_isis.rdf">DOAP RDF</a> file (which provides a machine-parseable description of the project) should also be updated with details of the new release. Validate using the <a href="http://www.w3.org/RDF/Validator/">W3C RDF Validator</a> service.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>For more information on DOAP files, see these <a href="http://projects.apache.org/doap.html">Apache policy docs</a>.</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>The <code>STATUS</code> file (in root of Apache Isis' source) should be updated with details of the new release.</p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_announce_the_release">Announce the release</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Announce the release to <a href="mailto:users@isis.apache.org">users mailing list</a>.</p>
-</div>
-<div class="paragraph">
-<p>For example, for a release of Apache Isis Core, use the following subject:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[ANN] Apache Isis version 1.9.0 Released</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>And use the following body (summarizing the main points as required):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>The Apache Isis team is pleased to announce the release of:
-* Apache Isis Core version 1.9.0
-* SimpleApp Archetype 1.9.0
-
-New features in this release include:
-- ...
-
-Full release notes are available on the Apache Isis website at [1].
-
-Note that:
-* ...
-
-You can access this release directly from the Maven central repo [2],
-or download the release and build it from source [3].
-
-Enjoy!
-
---The Apache Isis team
-
-[1] http://isis.apache.org/core/release-notes/isis-1.9.0.html
-[2] http://search.maven.org
-[3] http://isis.apache.org/download.html</code></pre>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_blog_post">Blog post</h3>
-<div class="paragraph">
-<p>Finally, <a href="https://blogs.apache.org/roller-ui/login.rol">log onto</a> the <a href="http://blogs.apache.org/isis/">Apache blog</a> and create a new post. Copy-n-paste the above mailing list announcement should suffice.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_prepare_for_next_iteration">Prepare for next iteration</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_merge_changes_from_branch_back_into_code_master_code_branch">Merge changes from branch back into <code>master</code> branch</h3>
-<div class="paragraph">
-<p>Because we release from a branch, the changes made in the branch (changes to <code>pom.xml</code> made by the <code>maven-release-plugin</code>, or any manual edits) should be merged back from the release branch back into the <code>master</code> branch:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout master                   # update master with latest
-git pull
-git merge isis-1.9.0                  # merge branch onto master
-git branch -d isis-1.9.0              # branch no longer needed
-git push origin --delete isis-1.9.0   # remote branch no longer needed</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If the core was updated, then you&#8217;ll most likely need to update other POMs to the new <code>-SNAPSHOT</code>.</p>
-</div>
-<div class="paragraph">
-<p>Next, do a sanity check that everything builds ok:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis
-mvn clean install</code></pre>
-</div>
-</div>
-<div class="olist lowerroman">
-<ol class="lowerroman" type="i">
-<li>
-<p>and run up an Isis application.</p>
-</li>
-</ol>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_code_status_code_file">Update <code>STATUS</code> file</h3>
-<div class="paragraph">
-<p>The trunk holds a <a href="https://git-wip-us.apache.org/repos/asf/isis/repo?p=isis.git;a=blob_plain;f=STATUS;hb=HEAD">STATUS</a> file which is a brief summary of the current status of the project. Update this file with details of the release.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_push_changes_2">Push changes</h3>
-<div class="paragraph">
-<p>Finally, push the changes up to origin:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git fetch    # check no new commits on origin/master
-git push</code></pre>
-</div>
-</div>
-</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="#_intro">Intro</a></li>
-<li><a href="#_process_prerequisites">Process Prerequisites</a>
-<ul class="sectlevel2">
-<li><a href="#_set_up_local_environment">Set up local environment</a>
-<ul class="sectlevel3">
-<li><a href="#_public_private_key">Public/private key</a></li>
-<li><a href="#_maven_code_settings_xml_code">Maven <code>settings.xml</code></a></li>
-<li><a href="#_pull_down_code_to_release">Pull down code to release</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#_set_environment_variables">Set Environment Variables</a></li>
-<li><a href="#_code_prerequisites">Code Prerequisites</a>
-<ul class="sectlevel2">
-<li><a href="#_update_the_version_number">Update the version number</a></li>
-<li><a href="#_update_parent_apache_isis_core">Update parent (Apache Isis Core)</a></li>
-<li><a href="#_check_no_snapshot_dependencies">Check no SNAPSHOT dependencies</a></li>
-<li><a href="#_update_plugin_versions">Update plugin versions</a></li>
-<li><a href="#_update_dependency_versions">Update dependency versions</a></li>
-<li><a href="#_code_cleanup_formatting">Code cleanup / formatting</a></li>
-<li><a href="#_license_header_notices_rat_tool">License header notices (RAT tool)</a></li>
-<li><a href="#_missing_license_check">Missing License Check</a></li>
-</ul>
-</li>
-<li><a href="#_sanity_check">Sanity check</a>
-<ul class="sectlevel2">
-<li><a href="#_sanity_check_for_code_core_code">Sanity check for <code>core</code></a></li>
-<li><a href="#_sanity_check_for_non_code_core_code_components">Sanity check for non-<code>core</code> components</a></li>
-</ul>
-</li>
-<li><a href="#_commit_changes">Commit changes</a></li>
-<li><a href="#_preparing_a_release_code_mvn_release_prepare_code">Preparing a Release (<code>mvn release:prepare</code>)</a>
-<ul class="sectlevel2">
-<li><a href="#_dry_run">Dry-run</a></li>
-<li><a href="#_post_prepare_sanity_check">Post-prepare sanity check</a></li>
-</ul>
-</li>
-<li><a href="#_upload_release_for_voting">Upload Release for Voting</a>
-<ul class="sectlevel2">
-<li><a href="#_perform_the_release">Perform the Release</a></li>
-<li><a href="#_check_the_repository">Check the Repository</a></li>
-<li><a href="#_close_the_repository">Close the Repository</a></li>
-<li><a href="#_push_changes">Push changes</a></li>
-</ul>
-</li>
-<li><a href="#_voting">Voting</a>
-<ul class="sectlevel2">
-<li><a href="#_start_voting_thread_on_a_href_mailto_e_p_e_g_e_p_e_g_a">Start voting thread on <a href="mailto:&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g">&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g</a></a></li>
-</ul>
-</li>
-<li><a href="#_after_the_vote">After the vote</a>
-<ul class="sectlevel2">
-<li><a href="#_for_a_successful_vote">For a successful vote</a></li>
-<li><a href="#_for_an_unsuccessful_vote">For an unsuccessful vote</a></li>
-</ul>
-</li>
-<li><a href="#_promoting_release_to_distribution">Promoting Release to Distribution</a>
-<ul class="sectlevel2">
-<li><a href="#_release_binaries_to_maven_central_repo">Release Binaries to Maven Central Repo</a></li>
-<li><a href="#_release_source_zip">Release Source Zip</a></li>
-</ul>
-</li>
-<li><a href="#_update_jira_and_generate_release_notes">Update JIRA and generate Release notes</a>
-<ul class="sectlevel2">
-<li><a href="#_close_all_jira_tickets_for_the_release">Close All JIRA tickets for the release</a></li>
-<li><a href="#_generate_release_notes_in_jira">Generate Release Notes in JIRA</a></li>
-<li><a href="#_mark_the_jira_versions_as_released">Mark the JIRA versions as released</a></li>
-<li><a href="#_update_isis_website">Update ISIS website</a></li>
-</ul>
-</li>
-<li><a href="#_announce_the_release">Announce the release</a>
-<ul class="sectlevel2">
-<li><a href="#_blog_post">Blog post</a></li>
-</ul>
-</li>
-<li><a href="#_prepare_for_next_iteration">Prepare for next iteration</a>
-<ul class="sectlevel2">
-<li><a href="#_merge_changes_from_branch_back_into_code_master_code_branch">Merge changes from branch back into <code>master</code> branch</a></li>
-<li><a href="#_update_code_status_code_file">Update <code>STATUS</code> file</a></li>
-<li><a href="#_push_changes_2">Push changes</a></li>
-</ul>
-</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" === "Formal Release Process") {
-        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>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/screencasts.html
----------------------------------------------------------------------
diff --git a/content/screencasts.html b/content/screencasts.html
index 9b55964..3be9fb2 100644
--- a/content/screencasts.html
+++ b/content/screencasts.html
@@ -556,7 +556,7 @@ table.CodeRay td.code>pre{padding:0}
 <p>NB: when configuring DataNucleus for the <strong>dom</strong> project, make sure you are in the 'Java perspective', not the 'Java EE perspective').<br></p>
 </div>
 <div class="paragraph">
-<p>Learn more <a href="./guides/dg.html#_dg_eclipse">here</a></p>
+<p>Learn more <a href="./guides/cg.html#_cg_ide_eclipse">here</a></p>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div><div class="videoblock">
 <div class="content">
@@ -572,7 +572,7 @@ table.CodeRay td.code>pre{padding:0}
 <p><em>How to import an Apache Isis maven-based application into IntelliJ and run the app.</em><br></p>
 </div>
 <div class="paragraph">
-<p>Learn more <a href="./guides/dg.html#_dg_intellij">here</a></p>
+<p>Learn more <a href="./guides/cg.html#_cg_ide_intellij">here</a></p>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div><div class="videoblock">
 <div class="content">