You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/09/18 07:30:41 UTC
[09/51] [partial] isis-site git commit: ISIS-1899: republishes 1.16.2
docs
http://git-wip-us.apache.org/repos/asf/isis-site/blob/dd05aaf7/content/versions/1.16.2/guides/ad/_images/metamodel.png
----------------------------------------------------------------------
diff --git a/content/versions/1.16.2/guides/ad/_images/metamodel.png b/content/versions/1.16.2/guides/ad/_images/metamodel.png
new file mode 100644
index 0000000..f4bfc85
Binary files /dev/null and b/content/versions/1.16.2/guides/ad/_images/metamodel.png differ
http://git-wip-us.apache.org/repos/asf/isis-site/blob/dd05aaf7/content/versions/1.16.2/guides/ad/ad.html
----------------------------------------------------------------------
diff --git a/content/versions/1.16.2/guides/ad/ad.html b/content/versions/1.16.2/guides/ad/ad.html
new file mode 100644
index 0000000..7da484e
--- /dev/null
+++ b/content/versions/1.16.2/guides/ad/ad.html
@@ -0,0 +1,1023 @@
+<!doctype html>
+<html>
+ <head>
+ <!--
+ 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.
+ -->
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <!-- No caching headers -->
+ <meta http-equiv="cache-control" content="no-cache">
+ <meta http-equiv="pragma" content="no-cache">
+ <meta http-equiv="expires" content="-1">
+ <title>Architecture and Design</title>
+ <link rel="icon" type="image/png" href="../../images/isis-favicon.png">
+ <!--
+ Based on DataNucleus' template,
+ that was in turn based on an earlier version of Apache Isis' template,
+ that was in turn based on Apache Deltaspike's template.
+
+ This template uses
+ * Bootstrap v3.3.7 (https://getbootstrap.com/) for navbar.
+ * Bootstrap TOC plugin v0.4.1 (https://afeld.github.io/bootstrap-toc/)
+ for the table of contents.
+ * jQuery (necessary for Bootstrap's JavaScript plugins)
+ * Font-Awesome for some icons used by Asciidoctor
+
+ Also:
+ * Bootswatch "flatly" theme for Bootstrap (https://bootswatch.com/flatly).
+ * slick.js (carousel)
+ * add a link to all headers (home-grown, adapted from blog posts)
+ * integration of elasticlunr.js (home-grown, adapted from blog posts)
+ -->
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/flatly/bootstrap.min.css" rel="stylesheet">
+ <link href="../../css/bootstrap-toc/0.4.1/bootstrap-toc.min.css" rel="stylesheet">
+ <link href="../../css/asciidoctor/foundation.css" rel="stylesheet">
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
+ <link href="../../css/slick/1.5.0/slick.css" rel="stylesheet">
+ <link href="../../css/slick/1.5.0/slick-theme.css" rel="stylesheet">
+ <link href="../../css/search-panel/search-panel.css" rel="stylesheet">
+ <link href="../../css/header-links/header-links.css" rel="stylesheet">
+ <link href="../../css/sticky-header/sticky-header.css" rel="stylesheet">
+ <link href="../../css/customisations.css" rel="stylesheet">
+ <!-- Coderay syntax formatter -->
+ <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{color:rgba(0,0,0,.4)}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top;line-height:1.45}
+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:#000}
+.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}
+ </style>
+ </head>
+ <body data-spy="scroll" data-target="#toc">
+ <div id="basedir" style="display:none;">
+ ../../
+ </div>
+ <div id="docname" style="display:none;">
+ ad
+ </div>
+ <div id="filetype" style="display:none;">
+ html
+ </div>
+ <!-- Navbar -->
+ <nav class="navbar navbar-default navbar-static-top header">
+ <div class="container">
+ <div class="navbar-header">
+ <!-- Three line menu button for use on mobile screens -->
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
+ <a class="navbar-brand" href="../../index.html"> <img alt="Brand" src="../../images/isis-logo-48x48.png"> </a>
+ <a class="navbar-brand" href="../../index.html">Apache Isis</a>
+ </div>
+ <!-- Navbar that will collapse on mobile screens -->
+ <div id="navbar" class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Documentation<span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li><a href="../../documentation.html">Table of Contents</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="dropdown-header">User Guides</li>
+ <li><a href="../../guides/ugfun/ugfun.html">Fundamentals</a></li>
+ <li><a href="../../guides/ugvw/ugvw.html">Wicket Viewer</a></li>
+ <li><a href="../../guides/ugvro/ugvro.html">Restful Objects Viewer</a></li>
+ <li><a href="../../guides/ugodn/ugodn.html">DataNucleus Object Store</a></li>
+ <li><a href="../../guides/ugsec/ugsec.html">Security</a></li>
+ <li><a href="../../guides/ugtst/ugtst.html">Testing</a></li>
+ <li><a href="../../guides/ugbtb/ugbtb.html">Beyond the Basics</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="dropdown-header">Reference Guides</li>
+ <li><a href="../../guides/rgant/rgant.html">Annotations</a></li>
+ <li><a href="../../guides/rgsvc/rgsvc.html">Domain Services</a></li>
+ <li><a href="../../guides/rgcfg/rgcfg.html">Core Config' Properties</a></li>
+ <li><a href="../../guides/rgcms/rgcms.html">Classes, Methods and Schema</a></li>
+ <li><a href="../../guides/rgmvn/rgmvn.html">Maven plugin</a></li>
+ <li><a href="../../guides/rgfis/rgfis.html">Framework Internal Services</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="dropdown-header">Javadoc</li>
+ <li><a href="http://javadoc.io/doc/org.apache.isis.core/isis-core-applib">Applib</a></li>
+ </ul> </li>
+ <li class="dropdown hidden-sm hidden-md"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Downloads<span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li class="dropdown-header">Maven archetypes</li>
+ <li><a href="../../guides/ugfun/ugfun.html#_ugfun_getting-started_helloworld-archetype">helloworld</a></li>
+ <li><a href="../../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">simpleapp</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a href="../../downloads.html">Downloads</a></li>
+ <li><a href="../../release-notes/release-notes.html">Release Notes</a></li>
+ <li><a href="../../migration-notes/migration-notes.html">Migration Notes</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a href="https://github.com/apache/isis">Github mirror</a></li>
+ </ul> </li>
+ <li class="dropdown hidden-sm"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Support<span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li class="dropdown-header">Guides</li>
+ <li><a href="../../guides/dg/dg.html">Developers' Guide</a></li>
+ <li><a href="../../guides/cgcom/cgcom.html">Committers' Guide</a></li>
+ <li><a href="../../guides/htg.html">Hints-n-Tips Guide</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="dropdown-header">Mailing Lists</li>
+ <li><a href="../../support.html">How to subscribe</a></li>
+ <li><a href="https://lists.apache.org/list.html?users@isis.apache.org">Archives (ASF Pony mail)</a></li>
+ <li><a href="http://isis.markmail.org/search/?q=">Archives (Markmail)</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="dropdown-header">Other Resources</li>
+ <li><a href="https://issues.apache.org/jira/browse/ISIS">ASF JIRA</a></li>
+ <li><a href="https://stackoverflow.com/questions/tagged/isis">Stack Overflow</a></li>
+ <li><a href="../../help.html">Wiki, Fisheye etc.</a></li>
+ </ul> </li>
+ <li class="dropdown hidden-sm hidden-md"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">@ASF<span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li><a href="https://www.apache.org/">Apache Homepage</a></li>
+ <li><a href="https://www.apache.org/events/current-event">Events</a></li>
+ <li><a href="https://www.apache.org/licenses/">Licenses</a></li>
+ <li><a href="https://www.apache.org/security/">Security</a></li>
+ <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a href="https://whimsy.apache.org/board/minutes/Isis.html">PMC board minutes</a></li>
+ </ul> </li>
+ </ul>
+ <div class="nav navbar-nav navbar-right">
+ <!-- 'style' added to fix height of input box. FIX THIS -->
+ <form class="navbar-form" role="search" id="search-form" style="padding: 1px 15px;">
+ <div class="form-group">
+ <input class="form-control" id="search-field" type="text" size="30" placeholder="Search">
+ </div>
+ </form>
+ </div>
+ <p class="nav navbar-text navbar-right small">v1.16.2</p>
+ </div>
+ </div>
+ </nav>
+ <div class="container">
+ <div class="row-fluid">
+ <div class="col-xs-12 col-sm-12 col-md-12 col-lg-9">
+ <div id="search-panel">
+ <div id="search-results"></div>
+ <div>
+ <br>
+ <a href="#" id="search-results-clear">clear</a>
+ </div>
+ </div>
+ <span class="pdf-link"><a href="ad.pdf"><img src="../../images/PDF-50.png"></a></span>
+ <div class="page-title">
+ <h1>Architecture and Design</h1>
+ </div>
+ <div id="doc-content">
+ <div class="btn-group" style="float: right; font-size: small; padding: 6px; ">
+ <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ad/ad.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button>
+ <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
+ <ul class="dropdown-menu">
+ <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/guides/ad/ad.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li>
+ <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/guides/ad/ad.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li>
+ <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/guides/ad/ad.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li>
+ <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/guides/ad/ad.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li>
+ </ul>
+ </div>
+ <div id="preamble">
+ <div class="sectionbody">
+ <div class="paragraph">
+ <p>This guide describes the internal architecture and design of the framework.</p>
+ </div>
+ </div>
+ </div>
+ <div class="sect1">
+ <h2 id="__ad_modules">1. Maven modules</h2>
+ <div class="sectionbody">
+ <div class="listingblock">
+ <div class="content">
+ <pre>adocs/
+├── documentation/
+└── template/
+core/ # see 'core', below
+example/ # see 'archetypes', below
+scripts/</pre>
+ </div>
+ </div>
+ <div class="sect2">
+ <h3 id="_core">1.1. core</h3>
+ <div class="paragraph">
+ <p>The core modules ….</p>
+ </div>
+ <div class="paragraph">
+ <p>All of these have the same Maven <code>groupId</code>, namely <code>org.apache.isis.core</code>.</p>
+ </div>
+ <div class="listingblock">
+ <div class="content">
+ <pre>core/
+├── .m2/ # used in gitlab CI
+├── applib/ # isis-core-applib
+├── commons/ # isis-core-commons
+├── integtestsupport/ # isis-core-integtestsupport
+├── log4j/ # isis-core-log4j
+├── maven-plugin/ # see 'maven plugins', below
+├── mavendeps/ # see 'mavendeps', below
+├── runtime/ # isis-core-runtime
+├── schema/ # isis-core-schema
+├── security/ # isis-core-security
+├── security-shiro/ # isis-core-security-shiro
+├── specsupport/ # isis-core-specsupport
+├── unittestsupport/ # isis-core-unittestsupport
+├── unittestsupport-test/ # isis-core-unittestsupport-test
+├── viewer-restfulobjects-applib/ # isis-core-viewer-restfulobjects-applib
+├── viewer-restfulobjects-rendering/ # isis-core-viewer-restfulobjects-rendering
+├── viewer-restfulobjects-server/ # isis-core-viewer-restfulobjects-server
+├── viewer-wicket-applib/ # isis-core-viewer-wicket-applib
+├── viewer-wicket-impl/ # isis-core-viewer-wicket-impl
+├── viewer-wicket-model/ # isis-core-viewer-wicket-model
+├── viewer-wicket-ui/ # isis-core-viewer-wicket-ui
+├── webdocker/ # isis-webdocker
+├── webserver/ # isis-core-webserver
+└── wrapper/ # isis-core-wrapper</pre>
+ </div>
+ </div>
+ <table class="tableblock frame-all grid-all spread">
+ <caption class="title">
+ Table 1. core maven modules
+ </caption>
+ <colgroup>
+ <col style="width: 33.3333%;">
+ <col style="width: 66.6667%;">
+ </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">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-applib</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Core application library.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-integtestsupport</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Integration test support. Application integration tests typically extend from adapter superclasses defined in this module.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-log4j</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Configures Log4j as the logging framework</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-metamodel</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>The classes that make up the metamodel which is used to render the UI.</p>
+ </div>
+ <div class="paragraph">
+ <p>See the <a href="#__ad_metamodel">section below</a> which also includes a simplified UML diagram of these classes.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-runtime</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>The classes that make up runtime management and persistence of domain objects, as well as framework for security (concepts of authentication or authorisation).</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-schema</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Defines XSDs and generated classes that capture commands and interactions in XML form.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-security</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Defines a "bypass" implementation of security, for prototyping only.</p>
+ </div>
+ <div class="paragraph">
+ <p>Using this implementation, any user/password is accepted and</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-security-shiro</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Defines an implementation of security authentication which delegates to Apache Shiro.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-specsupport</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Application BDD specs typically inherit from classes defined in this module.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-unittestsupport</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Application unit tests may use some of the utilities defined in this module.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-viewer-restfulobjects-applib</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Defines a client-side Java library for interacting with the REST API exposed by the Restful Objects viewer.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-viewer-restfulobjects-rendering</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Provides a <code>RepresentationService</code> API and a lower-level <code>ContentNegotiationService</code> API, along with implementations of each.</p>
+ </div>
+ <div class="paragraph">
+ <p>These implementations provide support for the representations defined by Restful Objects spec v1.0, as well as a number of other Apache Isis-specific representations.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-viewer-restfulobjects-server</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Defines the JAX-RS resources supported by the Restful Objects viewer.</p>
+ </div>
+ <div class="paragraph">
+ <p>These parse the input, delegate to the runtime for a response, and hand control to the rendering module to generate a representation.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-viewer-wicket-applib</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Currently just defines <code>WicketDeveloperUtilitiesService</code>, for clearing the cache.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-viewer-wicket-impl</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>The top-level integration with Wicket, for example defining the Apache Isis-specific implementations/subclasses of the Wicket APIs for application, web session, localizer and request cycle.</p>
+ </div>
+ <div class="paragraph">
+ <p>Also defines registries of pages and components, as well as a number of domain services and mixins (for use by applications) that are only available within the Wicket viewer.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-viewer-wicket-model</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Serializable mementos representing the state of runtime domain objects (or their individual members).</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-viewer-wicket-ui</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>UI components that render the moduls.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-webserver</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>For development within an IDE, provides a utility class to bootstrap the application (using Jetty).</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-core-wrapper</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Provides an implementation of the <code>WrapperFactory</code> domain service.</p>
+ </div>
+ </div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="sect2">
+ <h3 id="_core_mavendeps">1.2. core/mavendeps</h3>
+ <div class="paragraph">
+ <p>The <code>core/mavendeps</code> modules …</p>
+ </div>
+ <div class="paragraph">
+ <p>All of these have the same Maven <code>groupId</code>, namely <code>org.apache.isis.mavendeps</code>.</p>
+ </div>
+ <div class="listingblock">
+ <div class="title">
+ mavendeps Modules
+ </div>
+ <div class="content">
+ <pre>core
+└── mavendeps/
+ ├── isis-mavendeps-intellij/ # isis-mavendeps-intellij
+ ├── isis-mavendeps-testing/ # isis-mavendeps-testing
+ └── isis-mavendeps-webapp/ # isis-mavendeps-webapp</pre>
+ </div>
+ </div>
+ <table class="tableblock frame-all grid-all spread">
+ <caption class="title">
+ Table 2. core/mavendeps maven modules
+ </caption>
+ <colgroup>
+ <col style="width: 33.3333%;">
+ <col style="width: 66.6667%;">
+ </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">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-mavendeps-intellij</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Defunct.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-mavendeps-testing</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Aggregates dependencies on various test-scope plugins useful for unit- and integration testing a module. These include Apache Isis' own <code>unittestsupport</code>, <code>integtestsupport</code> and <code>specsupport</code> modules, as well as a number of common testing/mocking/assertion libraries.</p>
+ </div>
+ <div class="paragraph">
+ <p>These can then be included using a single dependency declaration:</p>
+ </div>
+ <div class="listingblock">
+ <div class="content">
+ <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependencies></span>
+ <span class="tag"><dependency></span>
+ <span class="tag"><groupId></span>org.apache.isis.mavendeps<span class="tag"></groupId></span>
+ <span class="tag"><artifactId></span>isis-mavendeps-testing<span class="tag"></artifactId></span>
+ <span class="tag"><type></span>pom<span class="tag"></type></span>
+ <span class="tag"><scope></span>test<span class="tag"></scope></span>
+ <span class="tag"></dependency></span>
+<span class="tag"></dependencies></span></code></pre>
+ </div>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-mavendeps-webapp</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Aggregates dependencies on Apache Isis runtime itself when used within a webapp.</p>
+ </div>
+ <div class="paragraph">
+ <p>These can then be included using a single dependency declaration:</p>
+ </div>
+ <div class="listingblock">
+ <div class="content">
+ <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependencies></span>
+ <span class="tag"><dependency></span>
+ <span class="tag"><groupId></span>org.apache.isis.mavendeps<span class="tag"></groupId></span>
+ <span class="tag"><artifactId></span>isis-mavendeps-webapp<span class="tag"></artifactId></span>
+ <span class="tag"><type></span>pom<span class="tag"></type></span>
+ <span class="tag"></dependency></span>
+<span class="tag"></dependencies></span></code></pre>
+ </div>
+ </div>
+ </div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="sect2">
+ <h3 id="_core_mavenplugins">1.3. core/mavenplugins</h3>
+ <div class="paragraph">
+ <p>There is a single Maven plugin module. Its Maven <code>groupId</code> is <code>org.apache.isis.tools</code>.</p>
+ </div>
+ <div class="listingblock">
+ <div class="title">
+ Plugin Modules
+ </div>
+ <div class="content">
+ <pre>core/
+└── maven-plugin/ # isis-maven-plugin</pre>
+ </div>
+ </div>
+ <table class="tableblock frame-all grid-all spread">
+ <colgroup>
+ <col style="width: 33.3333%;">
+ <col style="width: 66.6667%;">
+ </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">
+ <div>
+ <div class="paragraph">
+ <p><code>isis-maven-plugin</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Code to build a maven plugin for the build. This plugin can validate the metamodel and generate Swagger specs for a domain model as part of the application’s build pipeline.</p>
+ </div>
+ </div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="sect2">
+ <h3 id="_archetypes">1.4. archetypes</h3>
+ <div class="listingblock">
+ <div class="content">
+ <pre>example/
+├── application/
+│ ├── helloworld/ # org.apache.isis.example.application:helloworld
+│ └── simpleapp/ # org.apache.isis.example.application:simpleapp
+│ ├── application/ # org.apache.isis.example.application:simpleapp-application
+│ ├── module-simple/ # org.apache.isis.example.application:simpleapp-module-simple
+│ └── webapp/ # org.apache.isis.example.application:simpleapp-webapp
+└── archetype/
+ ├── helloworld/ # org.apache.isis.archetype:helloworld-archetype
+ └── simpleapp/ # org.apache.isis.archetype:simpleapp-archetype</pre>
+ </div>
+ </div>
+ <table class="tableblock frame-all grid-all spread">
+ <colgroup>
+ <col style="width: 33.3333%;">
+ <col style="width: 66.6667%;">
+ </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">
+ <div>
+ <div class="paragraph">
+ <p><code>helloworld</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>An example application as a single Maven module, including domain classes themselves plus code to bootstrap Apache Isis.</p>
+ </div>
+ <div class="paragraph">
+ <p>This is reverse engineered into the "helloworld" archetype.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>simpleapp</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>The top-level aggregator module for the "simpleapp" example application.</p>
+ </div>
+ <div class="paragraph">
+ <p>This is an extended version of helloworld, providing more structure (separating out domain model into modules) as well as unit tests, integration tests, BDD specs and fixtures.</p>
+ </div>
+ <div class="paragraph">
+ <p>The simpleapp modules in aggregate are reverse engineered into the "simpleapp" archetype.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>simpleapp-application</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Defines the contents of the "simpleapp" application using Apache Isis-defined classes, as well as globally scoped domain services and the home page.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>simpleapp-module-simple</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Contains the domain model for a single module.</p>
+ </div>
+ <div class="paragraph">
+ <p>The intention is to allow this module structure to be copied so that the developer can easily create further modules as their app increases in size.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>simpleapp-webapp</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Bootstraps Apache Isis as a webapp.</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>helloworld-archetype</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Helloworld archetype, reverse engineered from the "helloworld" application (above).</p>
+ </div>
+ </div></td>
+ </tr>
+ <tr>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p><code>simpleapp-archetype</code></p>
+ </div>
+ </div></td>
+ <td class="tableblock halign-left valign-top">
+ <div>
+ <div class="paragraph">
+ <p>Simpleapp archetype, reverse engineered from the "simpleapp" application (above).</p>
+ </div>
+ </div></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="sect1">
+ <h2 id="__ad_metamodel">2. Metamodel</h2>
+ <div class="sectionbody">
+ <div class="paragraph">
+ <p>The diagram below shows a simplified version of Apache Isis' internal metamodel.</p>
+ </div>
+ <div class="imageblock">
+ <div class="content">
+ <img src="_images/metamodel.png" alt="metamodel" width="788" height="784">
+ </div>
+ </div>
+ <div class="paragraph">
+ <p>where in the <code>metamodel</code> package:</p>
+ </div>
+ <div class="dlist">
+ <dl>
+ <dt class="hdlist1">
+ <code>ObjectSpecification</code>
+ </dt>
+ <dd>
+ <p>is equivalent to <code>java.lang.Class</code></p>
+ </dd>
+ <dt class="hdlist1">
+ <code>ObjectSpecId</code>
+ </dt>
+ <dd>
+ <p>is a value object equivalent to the <code>@DomainObject#objectType</code> or <code>@DomainService#objectType</code> attribute</p>
+ </dd>
+ <dt class="hdlist1">
+ <code>OneToOneAssociation</code>
+ </dt>
+ <dd>
+ <p>represents a scalar property</p>
+ </dd>
+ <dt class="hdlist1">
+ <code>OneToManyAssociation</code>
+ </dt>
+ <dd>
+ <p>represents a collection</p>
+ </dd>
+ <dt class="hdlist1">
+ <code>ObjectAction</code>
+ </dt>
+ <dd>
+ <p>represents an action (with multiple parameters, either scalar or list)</p>
+ </dd>
+ </dl>
+ </div>
+ <div class="paragraph">
+ <p>and in the <code>runtime</code> package:</p>
+ </div>
+ <div class="dlist">
+ <dl>
+ <dt class="hdlist1">
+ <code>Oid</code>
+ </dt>
+ <dd>
+ <p>is equivalent to the applib <code>Bookmark</code></p>
+ <div class="paragraph">
+ <p>and appears in URLs in the Wicket and Restful Objects viewers</p>
+ </div>
+ </dd>
+ <dt class="hdlist1">
+ <code>ObjectAdapter</code>
+ </dt>
+ <dd>
+ <p>is equivalent to <code>java.lang.Object</code></p>
+ </dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="hidden-xs hidden-sm hidden-md col-lg-3">
+ <nav id="toc" data-spy="affix" data-toggle="toc"></nav>
+ </div>
+ </div>
+ </div>
+ <footer class="footer">
+ <div class="container">
+ <div class="row">
+ <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache Software Foundation, licensed under the Apache License, v2.0. <br> Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation. </p>
+ </div>
+ </div>
+ </footer>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
+ <script src="../../js/bootstrap/3.3.7/bootstrap.min.js"></script>
+ <script src="../../js/bootstrap-toc/0.4.1/bootstrap-toc.min.js"></script>
+ <script src="../../js/slick/1.5.0/slick.min.js"></script>
+ <script src="../../js/elasticlunr/elasticlunr.min.js"></script>
+ <script src="../../js/sticky-header/sticky-header.js"></script>
+ <script src="../../js/search-panel/search-panel.js"></script>
+ <script src="../../js/header-link/header-link.js"></script>
+ <script src="../../js/toc-scroll/toc-scroll.js"></script>
+ </body>
+</html>