http://git-wip-us.apache.org/repos/asf/isis-site/blob/38ed5624/content/guides/cgcon.html
----------------------------------------------------------------------
diff --git a/content/guides/cgcon.html b/content/guides/cgcon.html
deleted file mode 100644
index 3085056..0000000
--- a/content/guides/cgcon.html
+++ /dev/null
@@ -1,4856 +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>Developers' 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">
-        pre code {
-            background-color: inherit;
-            border-style: none;
-        }
-
-        pre code > span:first-child {
-            margin-left: -5px;
-        }
-
-    <style>
-
-    <!--
-    <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;
-        }
-
-        div.documentation-page table.frame-all {
-            border-left: none;
-            border-right: none;
-        }
-
-        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="_cgcon">1. Developers' Guide</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>This contributors' guide is for:</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="sect2">
-<h3 id="_other_guides">1.1. Other Guides</h3>
-<div class="paragraph">
-<p>Apache Isis documentation is broken out into a number of user, reference 
and "supporting procedures" guides.</p>
-</div>
-<div class="paragraph">
-<p>The user guides available are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="ugfun.html">Fundamentals</a></p>
-</li>
-<li>
-<p><a href="ugvw.html">Wicket viewer</a></p>
-</li>
-<li>
-<p><a href="ugvro.html">Restful Objects viewer</a></p>
-</li>
-<li>
-<p><a href="ugsec.html">Security</a></p>
-</li>
-<li>
-<p><a href="ugtst.html">Testing</a></p>
-</li>
-<li>
-<p><a href="ugbtb.html">Beyond the Basics</a></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>The reference guides are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="rgant.html">Annotations</a></p>
-</li>
-<li>
-<p><a href="rgsvc.html">Domain Services</a></p>
-</li>
-<li>
-<p><a href="rgcfg.html">Configuration Properties</a></p>
-</li>
-<li>
-<p><a href="rgcms.html">Classes, Methods and Schema</a></p>
-</li>
-<li>
-<p><a href="rgmvn.html">Apache Isis Maven plugin</a></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>The remaining guides are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><a href="#">Developers' Guide</a> (this guide)</p>
-</li>
-<li>
-<p><a href="cgcom.html">Committers' Guide</a> (release procedures and related 
practices)</p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_cgcon_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="_cgcon_ide_intellij">2.1. Developing using IntelliJ IDEA</h3>
-<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 material does not constitute an endorsement; JetBrains is not 
affiliated to Apache Software Foundation in any way.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>This section describes how to install and setup JetBrains' IntelliJ IDEA, 
then how to import an application into IntelliJ and run it.</p>
-</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. These notes relates to IntelliJ 
Community Edition 14.1.x, with
-screenshots taken for Windows.</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="_cgcon_ide_intellij_other-settings-compiler">Other Settings 
(Compiler)</h5>
-<div class="paragraph">
-<p>There are also some other settings that influence the compiler.  We highly 
recommend you set these.</p>
-</div>
-<div class="paragraph">
-<p>On the <strong>Compiler</strong> 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-compiler/010-build-automatically.png"
 alt="010 build automatically" width="600px">
-</div>
-<div class="title">Figure 16. IntelliJ Compiler Settings</div>
-</div>
-<div class="paragraph">
-<p>On the <strong>Annotation Processors</strong> page, enable and adjust for 
the 'default' setting:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<img 
src="images/appendices/dev-env/intellij-idea/040-other-settings-compiler/020-annotation-processor.png"
 alt="020 annotation processor" width="600px">
-</div>
-<div class="title">Figure 17. IntelliJ Annotation Processor Settings</div>
-</div>
-<div class="paragraph">
-<p>This setting enables the generation of the <code>Q*</code> classes for 
DataNucleus type-safe queries, as well as being required
-for frameworks such as <a href="#_cg_ide_project-lombok">Project 
Lombok</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>IntelliJ may also have inferred these settings for specific 
projects/modules when importing; review the list on the left to see if the 
default is overridden and fix/delete as required.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect4">
-<h5 id="_cgcon_ide_intellij_other-settings-maven">Other Settings (Maven)</h5>
-<div class="paragraph">
-<p>There are also some other settings for Maven that we recommend you adjust 
(though these are less 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/042-other-settings-maven/010-maven-installation.png"
 alt="010 maven installation" width="600px">
-</div>
-<div class="title">Figure 18. IntelliJ Maven Settings - 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/042-other-settings-maven/020-maven-configuration.png"
 alt="020 maven configuration" width="600px">
-</div>
-<div class="title">Figure 19. IntelliJ Maven Settings - Configuration</div>
-</div>
-</div>
-<div class="sect4">
-<h5 id="_other_settings_misc">Other Settings (Misc)</h5>
-<div class="paragraph">
-<p>These settings are optional but also recommended.</p>
-</div>
-<div class="paragraph">
-<p>On the <strong>auto import</strong> 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/044-other-settings-misc/010-auto-import.png"
 alt="010 auto import" width="600px">
-</div>
-<div class="title">Figure 20. IntelliJ Maven Settings - Auto Import</div>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_importing_maven_modules">2.1.2. Importing 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_cheat_sheets">Keyboard 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 <a 
href="https://www.jetbrains.com/idea/docs/IntelliJIDEA_ReferenceCard_Mac.pdf";>MacOS</a></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="_switch_between_tools_editors">Switch between Tools &amp; 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="_plugins">Plugins</h5>
-<div class="paragraph">
-<p>You might want to set up some additional plugins.  You can do this 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 32. 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 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 class="paragraph">
-<p>If you hit an error of "duplicate classes":</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" 
href="images/appendices/dev-env/intellij-idea/060-troubleshooting/010-duplicate-classes.png"><img
 
src="images/appendices/dev-env/intellij-idea/060-troubleshooting/010-duplicate-classes.png"
 alt="010 duplicate classes" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>then make sure you have correctly configured the <a 
href="#_cg_ide_intellij_other-settings-compiler">annotation processor</a>
-settings.  Pay attention in particular to the "Production sources directory" 
and "Test sources directory", that these
-are set up correctly.</p>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_running_integration_tests">2.1.5. Running Integration Tests</h4>
-<div class="paragraph">
-<p>When running integration tests from within IntelliJ, make sure that the 
<code>search for tests</code> radio button is set to <code>In single 
module</code>:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" 
href="images/appendices/dev-env/intellij-idea/400-running-integtests/run-debug-configuration-single-module.png"><img
 
src="images/appendices/dev-env/intellij-idea/400-running-integtests/run-debug-configuration-single-module.png"
 alt="run debug configuration single module" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>If this radio button is set to one of the other options then you may obtain 
class loading issues; these result from IntelliJ attempting to run unit tests 
of the <code>dom</code> project that depend on test classes in that module, but 
using the classpath of the <code>integtests</code> module whereby the 
<code>dom</code> test-classes (<code>test-jar</code> artifact) are not exposed 
on the Maven classpath.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_cgcon_ide_intellij_advanced">2.1.6. 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="_cgcon_ide_intellij_advanced_dcevm">Setting up Dynamic Reloading</h5>
-<div class="paragraph">
-<p><a href="github.com/dcevm/dcevm">DCEVM</a> enhances the JVM with true 
hot-swap adding/removing of methods as well as more
-reliable hot swapping of the implementation of existing methods.</p>
-</div>
-<div class="paragraph">
-<p>In the context of Apache Isis, this is very useful for contributed actions 
and mixins and also view models; you should
-then be able to write these actions and have them be picked up without 
restarting the application.</p>
-</div>
-<div class="paragraph">
-<p>Changing persisting domain entities is more problematic, for two reasons: 
the JDO/DataNucleus enhancer needs to run on
-domain entities, and also at runtime JDO/DataNucleus would need to rebuild its 
own metamodel.  You may find that adding
-actions will work, but adding new properties or collections is much less 
likely to.</p>
-</div>
-<div class="paragraph">
-<p>To set up DCEVM, download the appropriate JAR from the <a 
href="https://dcevm.github.io/";>github page</a>, and run the
-installer.  For example:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">java -jar 
DCEVM-light-8u51-installer.jar</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>Be sure to run with appropriate privileges to be able to write to the 
installation directories of the JDK.  If running
-on Windows, that means running as <code>Administrator</code>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>After a few seconds this will display a dialog listing all installations of 
JDK that have been found:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" 
href="images/appendices/dev-env/intellij-idea/070-advanced/010-dcevm-list-of-found-jdk-installations.png"><img
 
src="images/appendices/dev-env/intellij-idea/070-advanced/010-dcevm-list-of-found-jdk-installations.png"
 alt="010 dcevm list of found jdk installations" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Select the corresponding installation, and select <code>Replace by 
DCEVM</code>.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" 
href="images/appendices/dev-env/intellij-idea/070-advanced/020-dcevm-once-installed.png"><img
 
src="images/appendices/dev-env/intellij-idea/070-advanced/020-dcevm-once-installed.png"
 alt="020 dcevm once installed" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>In IntelliJ, register the JDK in <code>File &gt; Project Structure</code> 
dialog:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" 
href="images/appendices/dev-env/intellij-idea/070-advanced/030-dcevm-intellij-project-structure.png"><img
 
src="images/appendices/dev-env/intellij-idea/070-advanced/030-dcevm-intellij-project-structure.png"
 alt="030 dcevm intellij project structure" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Finally, in the run configuration, select the patched JDK:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" 
href="images/appendices/dev-env/intellij-idea/070-advanced/040-dcevm-run-configuration.png"><img
 
src="images/appendices/dev-env/intellij-idea/070-advanced/040-dcevm-run-configuration.png"
 alt="040 dcevm run configuration" width="600px"></a>
-</div>
-</div>
-</div>
-<div class="sect4">
-<h5 id="_setting_up_jrebel">Setting up JRebel</h5>
-<div class="paragraph">
-<p>See the repo for the (non-ASF) <a 
href="https://github.com/isisaddons/isis-jrebel-plugin";>Isis JRebel</a> plugin. 
 With some
-modification, this should work for IntelliJ too.</p>
-</div>
-<div class="paragraph">
-<p>Note that JRebel is a commercial product, requiring a license.  At the time 
of writing there is also currently a
-non-commercial free license (though note this comes with some usage 
conditions).</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_cgcon_ide_eclipse">2.2. Developing using Eclipse</h3>
-<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 material does not constitute an endorsement; Eclipse foundation is not 
affiliated to Apache Software Foundation in any way.</p>
-</div>
-</td>
-</tr>
-</table>
-</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 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="ugfun.html#_ugfun_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="ugfun.html#_ugfun_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 class="sect3">
-<h4 id="_advanced">2.2.6. 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="paragraph">
-<p><a href="github.com/dcevm/dcevm">DCEVM</a> enhances the JVM with true 
hot-swap adding/removing of methods as well as more
-reliable hot swapping of the implementation of existing methods.</p>
-</div>
-<div class="paragraph">
-<p>In the context of Apache Isis, this is very useful for contributed actions 
and mixins and also view models; you should
-then be able to write these actions and have them be picked up without 
restarting the application.</p>
-</div>
-<div class="paragraph">
-<p>Changing persisting domain entities is more problematic, for two reasons: 
the JDO/DataNucleus enhancer needs to run on
-domain entities, and also at runtime JDO/DataNucleus would need to rebuild its 
own metamodel.  You may find that adding
-actions will work, but adding new properties or collections is much less 
likely to.</p>
-</div>
-<div class="paragraph">
-<p>For details of setting up DCEVM, see the <a 
href="#_cgcon_ide_intellij_advanced_dcevm">corresponding section</a> in the 
IntelliJ documentation.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_cgcon_ide_project-lombok">2.3. Project Lombok</h3>
-<div class="paragraph">
-<p><a href="https://projectlombok.org/";>Project Lombok</a> is an open source 
project to reduce the amount of boilerplate in
-your code.</p>
-</div>
-<div class="paragraph">
-<p>For example, rather than write:</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">String</span> 
name;
-<span class="directive">public</span> <span 
class="predefined-type">String</span> getName() {
-    <span class="keyword">return</span> name;
-}
-<span class="directive">public</span> <span class="type">void</span> 
setName(<span class="predefined-type">String</span> name) {
-    <span class="local-variable">this</span>.name = name;
-}</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>you can instead write simply:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="java"><span 
class="annotation">@Getter</span> <span class="annotation">@Setter</span>
-<span class="directive">private</span> <span 
class="predefined-type">String</span> name;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Under the covers it is implemented as an annotation processor; it basically 
hooks into the Java compiler
-so that it can emit additional bytecode (eg for the getter and setter).  See 
<a href="#_cg_ide_intellij_other-settings-compiler">here</a> for details of 
setting up in IntelliJ (Eclipse has very similar support).</p>
-</div>
-<div class="paragraph">
-<p>Apache Isis supports <a href="https://projectlombok.org/";>Project 
Lombok</a>, in that the annotations that would normally be placed on the getter 
(namely <a href="rgant.html#_rgant-Property"><code>Property</code></a>, <a 
href="rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a>, <a 
href="rgant.html#_rgant-Collection"><code>@Collection</code></a>, <a 
href="rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a> 
and <a href="rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a>) can 
be placed on the field instead.</p>
-</div>
-<div class="paragraph">
-<p>There are plugins for Lombok for maven; it&#8217;s just a matter of adding 
the required dependency.  To compile the code
-within your IDE (eg so that its compiler "knows" that there is, actually, a 
getter and setter) will require an
-Lombok plugin appropriate to that IDE.  See the <a 
href="https://projectlombok.org/download.html";>Lombok download page</a> for 
more information.</p>
-</div>
-<div class="sect3">
-<h4 id="_future_thoughts">2.3.1. Future thoughts</h4>
-<div class="paragraph">
-<p>In the future we might extend/fork Lombok so that it understands Isis' own 
annotations (ie <a href="rgant.html#_rgant-Property"><code>@Property</code></a> 
and <a href="rgant.html#_rgant-Collection"><code>@Collection</code></a>)
-rather than Lombok&#8217;s own <code>@Getter</code> and `@Setter.</p>
-</div>
-<div class="paragraph">
-<p>It might also be possible to use Lombok to generate the domain event 
classes for each member.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_cgcon_ide_agilej">2.4. AgileJ</h3>
-<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 material does not constitute an endorsement; AgileJ Structure Views is 
not affiliated to Apache Software Foundation in any way.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p><a href="http://www.agilej.com/";>AgileJ Structure Views</a> is a commercial 
product to reverse engineer and visualize Java classes from source code.</p>
-</div>
-<div class="paragraph">
-<p>The key to using the tool is in developing a suitable filter script, a DSL. 
 You can use the following script as a starting point for visualizing Apache 
Isis domain models:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="AgileJ">// use CTRL+SPACE for 
completion suggestions
-hide all fields
-hide setter methods
-hide private methods
-hide methods named compareTo
-hide methods named toString
-hide methods named inject*
-hide methods named disable*
-hide methods named default*
-hide methods named hide*
-hide methods named autoComplete*
-hide methods named choices*
-hide methods named title
-hide methods named iconName
-hide methods named validate*
-hide methods named modify*
-hide protected methods
-hide types annotated as DomainService
-hide types named Constants
-hide types named InvoicingInterval
-hide enums
-hide constructors
-hide inner types named *Event
-hide inner types named *Functions
-hide inner types named *Predicates
-show getter methods in green
-show methods annotated as Programmatic in orange
-show methods annotated as Action in largest
-hide dependency lines
-hide call lines
-hide method lines</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>For more information on AgileJ, see Paul Wells' 8-part tutorial series on 
Youtube; the first can be found <a 
href="https://www.youtube.com/watch?v=YrZQ7lMSsH0";>here</a> (view the "show 
more" comments to click through to other parts).</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_cgcon_ide-templates">3. Code and File Templates</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>We provide parameterized templates, for both IntelliJ and Eclipse, to help 
you write your domain applications.</p>
-</div>
-<div class="paragraph">
-<p>On IntelliJ we provide both file templates (<code>File &gt; Settings &gt; 
Editor &gt; File and Code Templates</code>) and also live templates (<code>File 
&gt; Settings &gt; Editor &gt; Live Templates</code>).  The former are used to 
create new classes or files (eg a new domain entity), while the latter are 
intended to modify an existing file (eg create a new property or add a 
<code>toString()</code> method etc).</p>
-</div>
-<div class="paragraph">
-<p>On Eclipse we provide only the latter sort of template (Windows &gt; 
Preferences &gt; Java &gt; Editor &gt; Templates).</p>
-</div>
-<div class="paragraph">
-<p>There are templates for writing Apache Isis domain objects, for writing 
unit tests (JUnit and JMock), and also for writing Asciidoc documentation (see 
also the <a href="#_cgcon_asciidoc-templates">appendix</a>).</p>
-</div>
-<div class="sect2">
-<h3 id="_download">3.1. Download</h3>
-<div class="paragraph">
-<p>The following table lists the templates available to download:</p>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<colgroup>
-<col style="width: 22%;">
-<col style="width: 22%;">
-<col style="width: 11%;">
-<col style="width: 22%;">
-<col style="width: 22%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Purpose</th>
-<th class="tableblock halign-left valign-top">IntelliJ<br>
-file template</th>
-<th class="tableblock halign-left valign-top">Prefix</th>
-<th class="tableblock halign-left valign-top">IntelliJ<br>
-live template</th>
-<th class="tableblock halign-left valign-top">Eclipse<br>
-template</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Domain Objects</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a 
href="../resources/templates/intellij-settings-file-templates-for-apache-isis.jar">Download</a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>is</code></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>(none)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>ju</code></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>(none)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>jm</code></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>
-<tr>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>Asciidoc</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>(none)</p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><code>ad</code></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p><a 
href="../resources/templates/isis-asciidoc-templates-idea.xml">Download</a></p>
-</div></div></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
-<p>(none)</p>
-</div></div></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>The most commonly used domain objects (live) 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 the live templates IntelliJ (Community edition 15), copy to 
the relevant <code>config/templates</code> directory, eg:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Windows <code>&lt;User home&gt;\.IdeaIC15\config\templates</code></p>
-</li>
-<li>
-<p>Linux <code>~/.IdeaIC14/config/templates</code></p>
-</li>
-<li>
-<p>Mac OS <code>~/Library/Preferences/IdeaIC15/templates</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>If using the Ultimate edition, the directory is 
<code>.IntelliJIdea15</code> rather than <code>IdeaIC15</code>.</p>
-</div>
-<div class="paragraph">
-<p>To install the file templates, use <code>File &gt; Import 
Settings</code>.</p>
-</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>For the live templates, enter the prefix in the editor (<code>is</code>, 
<code>ju</code>, <code>jm</code>) and the IDE will list all available templates
-in that category.</p>
-</div>
-<div class="paragraph">
-<p>For the file templates (IntelliJ only), these are available from <code>File 
&gt; New</code>.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_cgcon_building-isis">4. Building Apache Isis</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_cgcon_building-isis_git">4.1. Git</h3>
-<div class="paragraph">
-<p>The Apache Isis source code lives in a git repo.</p>
-</div>
-<div class="sect3">
-<h4 id="_cgcon_building-isis_git_installation">4.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="_cgcon_building-isis_git_installation_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="#_cgcon_contributing">contributing</a> page for details on which repo to 
clone from.</p>
-</div>
-</div>
-<div class="sect4">
-<h5 id="_cgcon_building-isis_git_installation_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;myusern...@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="_cgcon_building-isis_git_getting-help">4.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="_cgcon_building-isis_installing-java">4.2. Installing Java</h3>
-<div class="paragraph">
-<p>Apache Isis is compatible with Java 7 and Java 8.  For every-day use, the 
framework is usually compiled against Java 8.</p>
-</div>
-<div class="paragraph">
-<p>Releases however are <a href="#_cgcom_cutting-a-release">cut</a> using Java 
7, leveraging the link
-:http://maven.apache.org/plugins/maven-toolchains-plugin/[Maven toolchains 
plugin]).</p>
-</div>
-<div class="paragraph">
-<p>Therefore install either/both of Java 7 JDK and Java 8 JDK.  Note that the 
JRE is <em>not</em> sufficient.</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>If you intend to contribute back patches to Apache Isis, note that while 
you can develop using Java 8 within your IDE,
-be sure not to use any Java 8 APIs.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="sect3">
-<h4 id="_cgcon_building-isis_configure-maven-toolchains-plugin">4.2.1. 
Configure Maven toolchains plugin</h4>
-<div class="paragraph">
-<p>If you are a committer that will be performing releases of Apache Isis, 
then you <em>must</em> configure the
-<a 
href="http://maven.apache.org/plugins/maven-toolchains-plugin/";>toolchains</a> 
plugin so that releases can be built using
-Java 7.</p>
-</div>
-<div class="paragraph">
-<p>This is done by placing the <code>toolchains.xml</code> file in 
<code>~/.m2</code> directory.  Use the following file as a template,
-adjusting paths for your platform:</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;UTF8&quot;?&gt;</span>
-<span class="tag">&lt;toolchains&gt;</span>
-    <span class="tag">&lt;toolchain&gt;</span>
-        <span class="tag">&lt;type&gt;</span>jdk<span 
class="tag">&lt;/type&gt;</span>
-        <span class="tag">&lt;provides&gt;</span>
-            <span class="tag">&lt;version&gt;</span>1.8<span 
class="tag">&lt;/version&gt;</span>
-            <span class="tag">&lt;vendor&gt;</span>oracle<span 
class="tag">&lt;/vendor&gt;</span>
-        <span class="tag">&lt;/provides&gt;</span>
-        <span class="tag">&lt;configuration&gt;</span>
-            <span 
class="tag">&lt;jdkHome&gt;</span>/usr/lib64/jvm/jdk1.8.0_65<span 
class="tag">&lt;/jdkHome&gt;</span>
-            <span class="comment">&lt;!--
-            &lt;jdkHome&gt;c:\Program Files\Java\jdk1.8.0_65&lt;/jdkHome&gt;
-            --&gt;</span>
-        <span class="tag">&lt;/configuration&gt;</span>
-    <span class="tag">&lt;/toolchain&gt;</span>
-    <span class="tag">&lt;toolchain&gt;</span>
-        <span class="tag">&lt;type&gt;</span>jdk<span 
class="tag">&lt;/type&gt;</span>
-        <span class="tag">&lt;provides&gt;</span>
-            <span class="tag">&lt;version&gt;</span>1.7<span 
class="tag">&lt;/version&gt;</span>   <i class="conum" 
data-value="1"></i><b>(1)</b>
-            <span class="tag">&lt;vendor&gt;</span>oracle<span 
class="tag">&lt;/vendor&gt;</span>
-        <span class="tag">&lt;/provides&gt;</span>
-        <span class="tag">&lt;configuration&gt;</span>
-            <span 
class="tag">&lt;jdkHome&gt;</span>/usr/lib64/jvm/jdk1.7.0_79<span 
class="tag">&lt;/jdkHome&gt;</span>
-            <span class="comment">&lt;!--
-            &lt;jdkHome&gt;c:\Program Files\Java\jdk1.7.0_79&lt;/jdkHome&gt;
-            --&gt;</span>
-        <span class="tag">&lt;/configuration&gt;</span>
-    <span class="tag">&lt;/toolchain&gt;</span>
-<span class="tag">&lt;/toolchains&gt;</span></code></pre>
-</div>
-</div>
-<div class="colist arabic">
-<table>
-<tr>
-<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>The Apache Isis build is configured to search for the (<code>1.7, 
oracle</code>) JDK toolchain.</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>The Apache Isis parent <code>pom.xml</code> activates this plugin whenever 
the <code>apache-release</code> profile is enabled.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_cgcon_building-isis_installing-maven">4.3. 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="bash">export 
MAVEN_OPTS=&quot;-Xms512m -Xmx1024m&quot;</code></pre>
-<

<TRUNCATED>

Reply via email to