http://git-wip-us.apache.org/repos/asf/isis-site/blob/9d921a51/content/guides/rgcms/rgcms.html
----------------------------------------------------------------------
diff --git a/content/guides/rgcms/rgcms.html b/content/guides/rgcms/rgcms.html
index da8eebf..0ccd5c0 100644
--- a/content/guides/rgcms/rgcms.html
+++ b/content/guides/rgcms/rgcms.html
@@ -179,6 +179,7 @@ table.CodeRay td.code>pre{padding:0}
<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>
@@ -196,25 +197,32 @@ table.CodeRay td.code>pre{padding:0}
</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><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 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="https://issues.apache.org/jira/browse/ISIS">ASF
JIRA</a></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><a href="../../support.html">Mailing lists</a></li>
+ <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/[email protected]">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="http://stackoverflow.com/questions/tagged/isis">Stack
Overflow</a></li>
- <li><a href="../../guides/dg/dg.html">How to contribute</a></li>
- <li><a href="../../help.html">Other resources</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">
@@ -2520,7 +2528,7 @@ table.CodeRay td.code>pre{padding:0}
<td class="icon"> <i class="fa icon-warning"
title="Warning"></i> </td>
<td class="content">
<div class="paragraph">
- <p>(As of <code>1.8.0</code>) there are known limitations with
this functionality. Invariants are enforced when an object is initially created
and when it is edited, however invariants are currently <em>not</em> enforced
if an action is invoked.</p>
+ <p>There are known limitations with this functionality.
Invariants <em>are</em> enforced when an object is initially created and when
it is edited, however invariants are currently <em>not</em> enforced if an
action is invoked.</p>
</div> </td>
</tr>
</tbody>
@@ -3121,7 +3129,7 @@ table.CodeRay td.code>pre{padding:0}
<td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td>
<td class="content">
<div class="paragraph">
- <p>(As of <code>1.15.0</code>), the framework-provided
<code>AppManifestAbstract</code> and <code>AppManifestAbstract.Builder</code>
make it easy to write <code>AppManifest</code> that can be used both to
bootstrap the application "proper", and to be tweaked for use within
integration tests.</p>
+ <p>The framework-provided <code>AppManifestAbstract2</code> and
<code>AppManifestAbstract2.Builder</code> makes it easy to write an
<code>AppManifest</code>, defined by a set of <a
href="#_rgcms_classes_Module"><code>Module</code></a> implementations. The app
manifest can then be used both to bootstrap the application "proper", or for
integration tests.</p>
</div> </td>
</tr>
</tbody>
@@ -3331,6 +3339,19 @@ table.CodeRay td.code>pre{padding:0}
</div>
<div class="sect3">
<h4
id="__rgcms_classes_AppManifest-bootstrapping_bootstrapping">3.1.2.
Bootstrapping</h4>
+ <div class="admonitionblock note">
+ <table>
+ <tbody>
+ <tr>
+ <td class="icon"> <i class="fa icon-note" title="Note"></i>
</td>
+ <td class="content">
+ <div class="paragraph">
+ <p>The recommendations in this section no longer apply if
using the <a
href="../rgcms/rgcms.html#__rgcms_classes_AppManifest2-bootstrapping_bootstrapping"><code>AppManifest2</code></a>
interface and <code>Module</code>s to bootstrap your application.</p>
+ </div> </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
<div class="paragraph">
<p>One of the primary goals of the <code>AppManifest</code> is to
unify the bootstrapping of both integration tests and the webapp. This requires
that the integration tests and webapp can both reference the
implementation.</p>
</div>
@@ -3383,8 +3404,21 @@ table.CodeRay td.code>pre{padding:0}
</div>
<div class="sect4">
<h5
id="__rgcms_classes_AppManifest-bootstrapping_bootstrapping_AppManifestAbstract">AppManifestAbstract</h5>
+ <div class="admonitionblock important">
+ <table>
+ <tbody>
+ <tr>
+ <td class="icon"> <i class="fa icon-important"
title="Important"></i> </td>
+ <td class="content">
+ <div class="paragraph">
+ <p>The framework-provided <code>AppManifestAbstract2</code>
and <code>AppManifestAbstract2.Builder</code> supercede
<code>AppManifestAbstract</code>, making it easy to write an
<code>AppManifest</code> defined by a set of <a
href="#_rgcms_classes_Module"><code>Module</code></a> implementations.</p>
+ </div> </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
<div class="paragraph">
- <p>(As of <code>1.15.0</code>), the
<code>AppManifestAbstract</code> and its associated builder
(<code>AppManifestAbstract.Builder</code>) make it easy to bootstrap the
application both as a webapp and also as an integration test.</p>
+ <p>The <code>AppManifestAbstract</code> and its associated builder
(<code>AppManifestAbstract.Builder</code>) make it easy to bootstrap the
application both as a webapp and also as an integration test.</p>
</div>
<div class="paragraph">
<p>Rather than implement <code>AppManifest</code> interface
directly, instead your application subclasses from
<code>AppManifestAbstract</code>. This takes an instance of a
<code>AppManifestAbstract.Builder</code> in its constructor; the builder is
what allows for variation between environments.</p>
@@ -3834,10 +3868,10 @@ table.CodeRay td.code>pre{padding:0}
</ul>
</div>
<div class="paragraph">
- <p>This abstract class is intended to allow a domain service that
can execute <a
href="../rgcms/rgcms.html#_rgcms_classes_super_FixtureScript"><code>FixtureScript</code></a>s
to be easily written.</p>
+ <p>This abstract class constitutes the API of a domain service to
execute <a
href="../rgcms/rgcms.html#_rgcms_classes_super_FixtureScript"><code>FixtureScript</code></a>s.</p>
</div>
<div class="paragraph">
- <p>However, it has now been deprecated; instead we recommend that
the <a
href="../rgsvc/rgsvc.html#_rgsvc_testing_FixtureScriptsSpecificationProvider"><code>FixtureScriptsSpecificationProvider</code></a>
service is implemented instead. The framework will then automatically use <a
href="../rgsvc/rgsvc.html#_rgsvc_testing_FixtureScriptsDefault"><code>FixtureScriptsDefault</code></a>
as a fallback implementation of this class.</p>
+ <p>For more information, see <a
href="../rgsvc/rgsvc.html#_rgsvc_testing_FixtureScripts"><code>FixtureScripts</code></a>
in the domain services guide.</p>
</div>
<div class="paragraph">
<p>See the see the <a
href="../ugtst/ugtst.html#_ugtst_fixture-scripts">user guideâs testing
chapter</a> for further discussion on the use of fixture scripts, in particular
<a href="../ugtst/ugtst.html#_ugtst_fixture-scripts_api-and-usage">fixture
scripts' API and usage</a>.</p>
@@ -4988,7 +5022,7 @@ table.CodeRay td.code>pre{padding:0}
</div> </li>
<li> <p><code>o.a.i.applib.value.Markup</code></p>
<div class="paragraph">
- <p>(As of <code>1.15.1</code>), intended for use as a read-only
property to display arbitrary HTML.</p>
+ <p>Intended for use as a read-only property to display arbitrary
HTML.</p>
</div> </li>
<li> <p><code>o.a.i.applib.value.Clob</code></p>
<div class="paragraph">
@@ -5252,7 +5286,7 @@ table.CodeRay td.code>pre{padding:0}
</div>
</div>
<div class="sect3">
- <h4 id="_rgcms_classes_utility_ObjectContracts">3.7.2.
<code>ObjectContracts</code></h4>
+ <h4 id="_rgcms_classes_utility_ObjectContracts">3.7.2.
<code>ObjectContracts2</code></h4>
<div class="btn-group" style="float: right; font-size: small;
padding: 6px; margin-top: -55px; ">
<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/rgcms/_rgcms_classes_utility_ObjectContracts.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>
@@ -5264,7 +5298,7 @@ table.CodeRay td.code>pre{padding:0}
</ul>
</div>
<div class="paragraph">
- <p>The <code>ObjectContracts</code> test provides a series of
methods to make it easy for your domain objects to:</p>
+ <p>The <code>ObjectContracts2</code> utility class provides a
series of methods to make it easy for your domain objects to:</p>
</div>
<div class="ulist">
<ul>
@@ -5287,11 +5321,11 @@ table.CodeRay td.code>pre{padding:0}
<span class="directive">public</span> <span
class="predefined-type">String</span> getOwnedBy() { ... }
<span class="directive">public</span> <span class="type">int</span>
compareTo(<span class="directive">final</span> ToDoItem other) {
- <span class="keyword">return</span> ObjectContracts.compare(<span
class="local-variable">this</span>, other, <span class="string"><span
class="delimiter">"</span><span class="content">complete</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">dueBy</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">description</span><span
class="delimiter">"</span></span>);
+ <span class="keyword">return</span> ObjectContracts2.compare(<span
class="local-variable">this</span>, other, <span class="string"><span
class="delimiter">"</span><span class="content">complete</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">dueBy</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">description</span><span
class="delimiter">"</span></span>);
}
<span class="directive">public</span> <span
class="predefined-type">String</span> toString() {
- <span class="keyword">return</span> ObjectContracts.toString(<span
class="local-variable">this</span>, <span class="string"><span
class="delimiter">"</span><span class="content">description</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">complete</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">dueBy</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">ownedBy</span><span
class="delimiter">"</span></span>);
+ <span class="keyword">return</span> ObjectContracts2.toString(<span
class="local-variable">this</span>, <span class="string"><span
class="delimiter">"</span><span class="content">description</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">complete</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">dueBy</span><span
class="delimiter">"</span></span>,<span class="string"><span
class="delimiter">"</span><span class="content">ownedBy</span><span
class="delimiter">"</span></span>);
}
}</code></pre>
</div>
@@ -5303,7 +5337,7 @@ table.CodeRay td.code>pre{padding:0}
<td class="icon"> <i class="fa icon-warning"
title="Warning"></i> </td>
<td class="content">
<div class="paragraph">
- <p>Note that <code>ObjectContracts</code> makes heavy use of
Java Reflection. While itâs great to get going quickly in prototyping, we
recommend you use your IDE to code generate implementations of these methods
for production code.</p>
+ <p>Note that <code>ObjectContracts2</code> makes heavy use of
Java Reflection. While itâs great to get going quickly in prototyping, we
recommend you use your IDE to code generate implementations of these methods
for production code.</p>
</div>
<div class="paragraph">
<p>Moreover (and perhaps even more importantly)
<code>ObjectContracts</code> implementation can cause DataNucleus to
recursively rehydrate a larger number of associated entities (More detail
below).</p>
@@ -5679,7 +5713,7 @@ table.CodeRay td.code>pre{padding:0}
<td class="icon"> <i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
- <p>Prior to <code>1.13.0</code>, this identifier was the GUID
of the Isis transaction in which the object was created (hence the name). As of
<code>1.13.0</code>, this identifier actually is for the request/interaction in
which the object was created, so is actually now mis-named.</p>
+ <p>This identifier actually is for the request/interaction in
which the object was created, so is actually now mis-named.</p>
</div> </td>
</tr>
</tbody>
@@ -5937,6 +5971,9 @@ table.CodeRay td.code>pre{padding:0}
<div class="paragraph">
<p>The framework provides a single mixin that contributes to simply
<code>java.lang.Object</code>. It provides the ability to download the layout
XML for any domain object (in practical terms: entities and view models).</p>
</div>
+ <div class="paragraph">
+ <p>These mixin actions are all associated with the "Metadata"
fieldset. A number of other <a
href="../rgcms/rgcms.html#_rgcms_classes_mixins_Persistable">mixins</a> also
contribute properties or actions to the "Metadata" fieldset.</p>
+ </div>
<div class="sect4">
<h5
id="__rgcms_classes_mixins_Object_clearHints"><code>clearHints()</code></h5>
<div class="paragraph">
@@ -5953,12 +5990,6 @@ table.CodeRay td.code>pre{padding:0}
</div>
</div>
<div class="sect5">
- <h6 id="_appearance_in_the_ui">Appearance in the UI</h6>
- <div class="paragraph">
- <p>This mixin actions are all associated with the "Metadata"
fieldset. If there is no such field set, then the action will be rendered as a
top-level action).</p>
- </div>
- </div>
- <div class="sect5">
<h6 id="_related_services">Related Services</h6>
<div class="paragraph">
<p>This mixin uses the <a
href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_HintStore"><code>HintStore</code></a>
service to store and retrieve UI hints for each rendered object, per user.</p>
@@ -5994,15 +6025,6 @@ table.CodeRay td.code>pre{padding:0}
<p>See the documentation on <a
href="../ugvw/ugvw.html#_ugvw_layout_file-based">layout XML</a> and also the <a
href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_LayoutService"><code>LayoutService</code></a>
for more information on these styles</p>
</div>
<div class="sect5">
- <h6 id="_appearance_in_the_ui_2">Appearance in the UI</h6>
- <div class="paragraph">
- <p>This mixin actions are all associated with the "Metadata"
fieldset.</p>
- </div>
- <div class="paragraph">
- <p>A number of other <a
href="../rgcms/rgcms.html#_rgcms_classes_mixins_Persistable">mixins</a> also
contribute properties and actions to the "Metadata" fieldset.</p>
- </div>
- </div>
- <div class="sect5">
<h6 id="_related_services_2">Related Services</h6>
<div class="paragraph">
<p>This mixin calls <a
href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_LayoutService"><code>LayoutService</code></a>
to obtain the layout XML.</p>
@@ -6022,18 +6044,61 @@ table.CodeRay td.code>pre{padding:0}
</div>
</div>
<div class="sect5">
- <h6 id="_appearance_in_the_ui_3">Appearance in the UI</h6>
+ <h6 id="_related_services_3">Related Services</h6>
<div class="paragraph">
- <p>This mixin actions are all associated with the "Metadata"
fieldset.</p>
+ <p>This mixin calls <a
href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_MetamodelService"><code>MetaModelService</code></a>
and the <a
href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridService"><code>GridService</code></a>
to invalidate their caches.</p>
</div>
+ </div>
+ </div>
+ <div class="sect4">
+ <h5
id="__rgcms_classes_mixins_Object_downloadLayoutXml"><code>downloadLayoutXml()</code></h5>
+ <div class="paragraph">
+ <p>The <code>Object_downloadLayoutXml</code> mixin provides an
action to download the <a
href="../ugvw/ugvw.html#_ugvw_layout_file-based">layout XML</a> for the current
domain object. It has the following signature:</p>
+ </div>
+ <div class="listingblock">
+ <div class="content">
+ <pre class="CodeRay highlight"><code data-lang="java"><span
class="directive">public</span> <span class="predefined-type">Object</span>
downloadLayoutXml(
+ <span class="annotation">@ParameterLayout</span>(named = <span
class="string"><span class="delimiter">"</span><span class="content">File
name</span><span class="delimiter">"</span></span>)
+ <span class="directive">final</span> <span
class="predefined-type">String</span> fileName,
+ <span class="directive">final</span> LayoutService.Style style) {
<i class="conum" data-value="1"></i><b>(1)</b>
+ ...
+}</code></pre>
+ </div>
+ </div>
+ <div class="colist arabic">
+ <table>
+ <tbody>
+ <tr>
+ <td><i class="conum" data-value="1"></i><b>1</b></td>
+ <td>either current, complete, normalized or minimal.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="paragraph">
+ <p>See the documentation on <a
href="../ugvw/ugvw.html#_ugvw_layout_file-based">layout XML</a> and also the <a
href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_LayoutService"><code>LayoutService</code></a>
for more information on these styles</p>
+ </div>
+ <div class="sect5">
+ <h6 id="_related_services_4">Related Services</h6>
<div class="paragraph">
- <p>A number of other <a
href="../rgcms/rgcms.html#_rgcms_classes_mixins_Persistable">mixins</a> also
contribute properties and actions to the "Metadata" fieldset.</p>
+ <p>This mixin calls <a
href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_LayoutService"><code>LayoutService</code></a>
to obtain the layout XML.</p>
+ </div>
+ </div>
+ </div>
+ <div class="sect4">
+ <h5
id="__rgcms_classes_mixins_Object_openRestApi"><code>openRestApi()</code></h5>
+ <div class="paragraph">
+ <p>The <code>Object_openRestApi</code> mixin provides an action to
navigate to the URL of the <a href="../ugvro/ugvro.html">Restful Objects
resource</a> corresponding to the domain object. It has the following
signature:</p>
+ </div>
+ <div class="listingblock">
+ <div class="content">
+ <pre class="CodeRay highlight"><code data-lang="java"><span
class="directive">public</span> <span class="predefined-type">URL</span>
openRestApi() { ... }</code></pre>
</div>
</div>
<div class="sect5">
- <h6 id="_related_services_3">Related Services</h6>
+ <h6 id="_related_services_5">Related Services</h6>
<div class="paragraph">
- <p>This mixin calls <a
href="../rgsvc/rgsvc.html#_rgsvc_metadata-api_MetamodelService"><code>MetaModelService</code></a>
and the <a
href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridService"><code>GridService</code></a>
to invalidate their caches.</p>
+ <p>This mixin calls <a
href="../rgsvc/rgsvc.html#_rgsvc_integration-api_BookmarkService"><code>BookmarkService</code></a>
to build the URL.</p>
</div>
</div>
</div>
@@ -6121,7 +6186,7 @@ table.CodeRay td.code>pre{padding:0}
<p>If the domain objectâs JAXB annotations reference only a
single XSD schema then this will return that XML text as a <a
href="../rgcms/rgcms.html#_rgcms_classes_value-types_Clob"><code>Clob</code></a>
of that XSD. If there are multiple XSD schemas referenced then the action will
return a zip of those schemas, wrapped up in a <a
href="../rgcms/rgcms.html#_rgcms_classes_value-types_Blob"><code>Blob</code></a>.
The <code>IsisSchemas</code> parameter to the action can be used to optionally
ignore the common <a href="../rgcms/rgcms.html#_rgcms_schema">Apache Isis
schemas</a> (useful if there is only one other XSD schema referenced by the
DTO).</p>
</div>
<div class="sect4">
- <h5 id="_related_services_4">Related Services</h5>
+ <h5 id="_related_services_6">Related Services</h5>
<div class="paragraph">
<p>The <code>Dto_downloadXml</code> and
<code>Dto_downloadXsd</code> delegate to the <a
href="../rgsvc/rgsvc.html#_rgsvc_integration-api_JaxbService"><code>JaxbService</code></a>
to actually generate the XML/XSD.</p>
</div>
@@ -6142,6 +6207,9 @@ table.CodeRay td.code>pre{padding:0}
<div class="paragraph">
<p>All domain entities automatically implement the DataNucleus
<code>Persistable</code> role interface as a result of the enhancer process
(the fully qualified class name is
<code>org.datanucleus.enhancement.Persistable</code>). So as a developer you do
not need to write any code to obtain the mixins that contribute to this
interface.</p>
</div>
+ <div class="paragraph">
+ <p>These mixin properties/actions are all associated with the
"Metadata" fieldset. A number of other <a
href="../rgcms/rgcms.html#_rgcms_classes_mixins_Object">mixins</a> also
contribute properties or actions to the "Metadata" fieldset.</p>
+ </div>
<div class="sect4">
<h5
id="__rgcms_classes_mixins_Persistable_downloadJdoMetadata"><code>downloadJdoMetadata()</code></h5>
<div class="paragraph">
@@ -6167,16 +6235,7 @@ table.CodeRay td.code>pre{padding:0}
</table>
</div>
<div class="sect5">
- <h6 id="_appearance_in_the_ui_4">Appearance in the UI</h6>
- <div class="paragraph">
- <p>This mixin action is associated with the "Metadata" fieldset,
and will appear as a panel drop-down action.</p>
- </div>
- <div class="paragraph">
- <p>These mixin properties are all associated with the "Metadata"
fieldset. The <a href="../rgcms/rgcms.html#_rgcms_classes_mixins_Object">Object
mixin</a> also contribute an action to the "Metadata" fieldset.</p>
- </div>
- </div>
- <div class="sect5">
- <h6 id="_related_services_5">Related Services</h6>
+ <h6 id="_related_services_7">Related Services</h6>
<div class="paragraph">
<p>The mixin delegates to the <a
href="../rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_IsisJdoSupport"><code>IsisJdoSupport</code></a>
service to obtain a reference to the JDO
<code>PersistenceManagerFactory</code>.</p>
</div>
@@ -6194,17 +6253,11 @@ table.CodeRay td.code>pre{padding:0}
<li> <p><code>Persistable_datanucleusVersionLong</code> will
expose the entityâs version, assuming that the version is or can be cast to
<code>java.lang.Long</code>. Otherwise the property will be hidden.</p> </li>
</ul>
</div>
- <div class="sect5">
- <h6 id="_appearance_in_the_ui_5">Appearance in the UI</h6>
- <div class="paragraph">
- <p>These mixin properties are all associated with the "Metadata"
fieldset. The <a href="../rgcms/rgcms.html#_rgcms_classes_mixins_Object">Object
mixin</a> also contribute an action to the "Metadata" fieldset.</p>
- </div>
- </div>
</div>
</div>
</div>
<div class="sect2">
- <h3 id="_rgcms_classes_layout">3.13. Layout</h3>
+ <h3 id="_rgcms_classes_layout">3.13. (Object) Layout</h3>
<div class="btn-group" style="float: right; font-size: small;
padding: 6px; margin-top: -55px; ">
<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/rgcms/_rgcms_classes_layout.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>
@@ -6216,7 +6269,7 @@ table.CodeRay td.code>pre{padding:0}
</ul>
</div>
<div class="paragraph">
- <p>The <code>org.apache.isis.applib.layout</code> package defines a
number of classes that allow the layout of domain objects (entities and view
models) to be customized. These classes fall into two main categories:</p>
+ <p>The <code>org.apache.isis.applib.layout.grid</code> and
<code>org.apache.isis.applib.layout.component</code> packages together define a
number of classes that allow the layout of domain objects (entities and view
models) to be customized. These classes fall into two main categories:</p>
</div>
<div class="ulist">
<ul>
@@ -6231,7 +6284,10 @@ table.CodeRay td.code>pre{padding:0}
<p>The component classes, meanwhile, are broadly equivalent to the
"layout" annotations (<a
href="../rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a>,
<a
href="../rgant/rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>,
<a
href="../rgant/rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>
and <a
href="../rgant/rgant.html#_rgant-DomainObjectLayout"><code>@DomainObjectLayout</code></a></p>
</div>
<div class="paragraph">
- <p>All of the classes in this package are JAXB-annotated, meaning
that they can be serialized to/from XML (the <code>component</code> classes in
the <code><a href="http://isis.apache.org/applib/layout/component"
class="bare">http://isis.apache.org/applib/layout/component</a></code> XSD
namespace, the bootstrap 3 grid classes in the <code><a
href="http://isis.apache.org/applib/layout/grid/bootstrap3"
class="bare">http://isis.apache.org/applib/layout/grid/bootstrap3</a></code>
XSD namespace). This ability to serialize to/from XML is used by the <a
href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridLoaderService"><code>GridLoaderService</code></a>,
the default implementation of which reads the grid layout for a domain class
from a <code>.layout.xml</code> file on the classpath.</p>
+ <p>All of the classes in this package are JAXB-annotated, meaning
that they can be serialized to/from XML (the <code>component</code> classes in
the <code><a href="http://isis.apache.org/applib/layout/component"
class="bare">http://isis.apache.org/applib/layout/component</a></code> XSD
namespace, the bootstrap 3 grid classes in the <code><a
href="http://isis.apache.org/applib/layout/grid/bootstrap3"
class="bare">http://isis.apache.org/applib/layout/grid/bootstrap3</a></code>
XSD namespace). This ability to serialize to/from XML is used by the <a
href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_GridLoaderService"><code>GridLoaderService</code></a>,
the default implementation of which reads the grid layout for a domain class
from a <code>.layout.xml</code> file on the classpath. It also allows the grid
to be exposed through the REST API provided by the <a
href="../ugvro/ugvro.html">Restful Objects viewer</a>, as either XML or
JSON.</p>
+ </div>
+ <div class="paragraph">
+ <p>The various components (properties, collections, actions and
domain object) also allow a link to be associated with each. These links are
populated by the framework automatically when exposing the object layout grid
through the REST API, pointing back to the standard Restful Objects resources.
This design greatly assists in the implementation of generic REST clients.</p>
</div>
<div class="sect3">
<h4 id="__rgcms_classes_layout_component">3.13.1. Component</h4>
@@ -6242,7 +6298,7 @@ table.CodeRay td.code>pre{padding:0}
<ul>
<li> <p><code>FieldSet</code><br></p>
<div class="paragraph">
- <p>A fieldset (previously also called a property group or member
group) of a number of the domain objectâs properties (along with any
associationed actions of those properties).</p>
+ <p>A fieldset (sometimes also called a property group or member
group) of a number of the domain objectâs properties (along with any
associationed actions of those properties).</p>
</div> </li>
<li> <p>layout data classes, which correspond to the similarly
named annotations:</p>
<div class="ulist">
@@ -6258,11 +6314,14 @@ table.CodeRay td.code>pre{padding:0}
<div class="paragraph">
<p>In addition, the component package includes <code>Grid</code>,
representing the top level container for a custom layout for a domain object.
<code>Grid</code> itself is merely an interface, but it also defines the
visitor pattern to make it easy for validate and normalize the grid layouts.
The <code>GridAbstract</code> convenience superclass provides a partial
implementation of this visitor pattern.</p>
</div>
+ <div class="paragraph">
+ <p>The XSD for these classes is available at <a
href="http://isis.apache.org/applib/layout/component/component.xsd"
class="bare">http://isis.apache.org/applib/layout/component/component.xsd</a>.</p>
+ </div>
</div>
<div class="sect3">
<h4 id="__rgcms_classes_layout_grid-bootstrap3">3.13.2. Bootstrap3
Grid</h4>
<div class="paragraph">
- <p>As noted above, the default bootstrap3 grid classes are modelled
closely on <a href="http://getbootstrap.com">Bootstrap 3</a>. Bootstrapâs <a
href="http://getbootstrap.com/css/#grid">grid system</a> divides the page width
equally into 12 columns, and so each column spans 1 or more of these widths.
Thus, a column with a span of 12 is the full width, one with a span of 6 is
half the width, one with a span of 4 is a third of the width, and so on.</p>
+ <p>The bootstrap3 grid classes are modelled closely on <a
href="http://getbootstrap.com">Bootstrap 3</a>. Bootstrapâs <a
href="http://getbootstrap.com/css/#grid">grid system</a> divides the page width
equally into 12 columns, and so each column spans 1 or more of these widths.
Thus, a column with a span of 12 is the full width, one with a span of 6 is
half the width, one with a span of 4 is a third of the width, and so on.</p>
</div>
<div class="paragraph">
<p>When specifying the span of a column, Bootstrap also allows a
size to be specified (<code>XS</code>, <code>SM</code>, <code>MD</code>,
<code>LG</code>). The size determines the rules for responsive design. Apache
Isis defaults to <code>MD</code> but this can be overridden. It is also
possible to specify multiple size/spans for a given column.</p>
@@ -6274,7 +6333,7 @@ table.CodeRay td.code>pre{padding:0}
<ul>
<li> <p><code>BS3Grid</code><br></p>
<div class="paragraph">
- <p>Consists of a number of <code>BS3Row</code>s. <br></p>
+ <p>Consists of a number of <code>BS3Row</code>s.</p>
</div>
<div class="paragraph">
<p>This class is the concrete implementation of
<code>Grid</code> interface, discussed previously. As such, it extends the
<code>Grid.Visitor</code> to iterate over all of the <code>Row</code>s of the
grid.</p>
@@ -6285,10 +6344,10 @@ table.CodeRay td.code>pre{padding:0}
</div> </li>
<li> <p><code>BS3Col</code><br></p>
<div class="paragraph">
- <p>A container of almost everything else. A column most commonly
contains properties (grouped into <code>FieldSet</code>s, described above) or
collections (specified by <code>CollectionLayoutData</code>, also above).
However, a <code>Col</code> might instead contain a <code>BS3TabGroup</code>
(described below) in order that the object members is arranged into tabs.
<br></p>
+ <p>A container of almost everything else. A column most commonly
contains properties (grouped into <code>FieldSet</code>s, described above) or
collections (specified by <code>CollectionLayoutData</code>, also above).
However, a <code>Col</code> might instead contain a <code>BS3TabGroup</code>
(described below) in order that the object members is arranged into tabs.</p>
</div>
<div class="paragraph">
- <p>It is also possible for a <code>Col</code> to contain the
objectâs title/icon (using <code>DomainObjectLayoutData</code>) or indeed
arbitrary actions (using <code>`ActionLayoutData</code>).<br></p>
+ <p>It is also possible for a <code>Col</code> to contain the
objectâs title/icon (using <code>DomainObjectLayoutData</code>) or indeed
arbitrary actions (using <code>`ActionLayoutData</code>).</p>
</div>
<div class="paragraph">
<p>Finally, a <code>BS3Col</code> can also contain other
<code>BS3Row</code>s, allowing arbitrarily deep hierarchies of containers as
required.</p>
@@ -6315,6 +6374,184 @@ table.CodeRay td.code>pre{padding:0}
<div class="paragraph">
<p>All of these classes also allow custom CSS to be specified;
these are added to the CSS classes for the corresponding
<code><div</code>> in the rendered page. The <a
href="../ugvw/ugvw.html#_ugvw_customisation_tweaking-css-classes"><code>application.css</code></a>
file can then be used for application-specific CSS, allowing arbitrary
fine-tuning of the layout of the page.</p>
</div>
+ <div class="paragraph">
+ <p>The XSD for these classes is available at <a
href="http://isis.apache.org/applib/layout/menus/menubars.xsd"
class="bare">http://isis.apache.org/applib/layout/menus/menubars.xsd</a>.</p>
+ </div>
+ </div>
+ <div class="sect3">
+ <h4 id="__rgcms_classes_layout_link">3.13.3. Link</h4>
+ <div class="paragraph">
+ <p>The link classes reside in the
<code>org.apache.isis.applib.layout.links</code> package, and consist of just
the <code>Link</code> class:</p>
+ </div>
+ <div class="listingblock">
+ <div class="content">
+ <pre class="CodeRay highlight"><code data-lang="java"><span
class="directive">public</span> <span class="type">class</span> <span
class="class">Link</span> {
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getRel() { ... } <i class="conum"
data-value="1"></i><b>(1)</b>
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getMethod() { ... } <i class="conum"
data-value="2"></i><b>(2)</b>
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getHref() { ... } <i class="conum"
data-value="3"></i><b>(3)</b>
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getType() { ... } <i class="conum"
data-value="4"></i><b>(4)</b>
+ ...
+}</code></pre>
+ </div>
+ </div>
+ <div class="colist arabic">
+ <table>
+ <tbody>
+ <tr>
+ <td><i class="conum" data-value="1"></i><b>1</b></td>
+ <td>a "rel" (as defined by section 2.7.1.2 of the RO spec v1.0),
identifying the nature of the link.</td>
+ </tr>
+ <tr>
+ <td><i class="conum" data-value="2"></i><b>2</b></td>
+ <td>the HTTP method to access the link. This is always
"GET".</td>
+ </tr>
+ <tr>
+ <td><i class="conum" data-value="3"></i><b>3</b></td>
+ <td>The (absolute) URL to access the Restful Objects
resource.</td>
+ </tr>
+ <tr>
+ <td><i class="conum" data-value="4"></i><b>4</b></td>
+ <td>The media type (<code>Accept</code> header) that will be
returned by the URL.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="paragraph">
+ <p>The XSD for these classes is available at <a
href="http://isis.apache.org/applib/layout/links/links.xsd"
class="bare">http://isis.apache.org/applib/layout/links/links.xsd</a>.</p>
+ </div>
+ </div>
+ </div>
+ <div class="sect2">
+ <h3 id="_rgcms_classes_menubars">3.14. MenuBars Layout</h3>
+ <div class="btn-group" style="float: right; font-size: small;
padding: 6px; margin-top: -55px; ">
+ <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/rgcms/_rgcms_classes_menubars.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/rgcms/_rgcms_classes_menubars.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/rgcms/_rgcms_classes_menubars.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/rgcms/_rgcms_classes_menubars.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/rgcms/_rgcms_classes_menubars.adoc"
target="_blank"><i class="fa fa-hand-o-right fa-fw"
aria-hidden="true"></i> Blame</a></li>
+ </ul>
+ </div>
+ <div class="paragraph">
+ <p>The <code>org.apache.isis.applib.layout.menubars</code> package
and subpackages define a number of interfaces classes that allow the layout of
domain service actions to be organised across menu bars, menus and menu
sections.</p>
+ </div>
+ <div class="paragraph">
+ <p>The classes define a hierarchical structure of menu bars, menus
and menu sections. Similar to the <a href="#_rgcms_classes_layout">object
layout</a> classes, the concrete menu classes support bootstrap3; support for
other layout systems is possible.</p>
+ </div>
+ <div class="paragraph">
+ <p>The component class <code>ServiceActionLayoutData</code> defines
action metadata, being broadly equivalent to the "layout" annotations for
actions, ie <a
href="../rgant/rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>.
This is similar to the <code>ActionLayoutData</code> component class used for
object layouts, but also captures the identity of the "owning" domain service.
Service actions are grouped into menu sections.</p>
+ </div>
+ <div class="paragraph">
+ <p>All of the classes in this package are JAXB-annotated, meaning
that they can be serialized to/from XML (in the <code><a
href="http://isis.apache.org/applib/layout/menubars/bootstrap3"
class="bare">http://isis.apache.org/applib/layout/menubars/bootstrap3</a></code>
XSD namespace). This ability to serialize to/from XML is used by the <a
href="../rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_MenuBarsLoaderService"><code>MenuBarsLoaderService</code></a>,
the default implementation of which reads the grid layout for a domain class
from a <code>.layout.xml</code> file on the classpath. It also allows the menu
bars to be exposed through the REST API provided by the <a
href="../ugvro/ugvro.html">Restful Objects viewer</a>, as either XML or
JSON.</p>
+ </div>
+ <div class="paragraph">
+ <p>The service action component also allows a link to be associated
with it. Each such link is populated by the framework automatically when
exposing the menu bars layout through the REST API, pointing back to the
standard Restful Objects resources. This design greatly assists in the
implementation of generic REST clients.</p>
+ </div>
+ <div class="sect3">
+ <h4 id="_rgcms_classes_menubars_menus">3.14.1. Menus</h4>
+ <div class="btn-group" style="float: right; font-size: small;
padding: 6px; margin-top: -55px; ">
+ <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/rgcms/_rgcms_classes_menubars_menus.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/rgcms/_rgcms_classes_menubars_menus.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/rgcms/_rgcms_classes_menubars_menus.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/rgcms/_rgcms_classes_menubars_menus.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/rgcms/_rgcms_classes_menubars_menus.adoc"
target="_blank"><i class="fa fa-hand-o-right fa-fw"
aria-hidden="true"></i> Blame</a></li>
+ </ul>
+ </div>
+ <div class="paragraph">
+ <p>The menu classes reside in the
<code>org.apache.isis.applib.layout.menubars.bootstrap3</code> package,
consisting of:</p>
+ </div>
+ <div class="ulist">
+ <ul>
+ <li> <p><code>BS3MenuBars</code></p>
+ <div class="paragraph">
+ <p>The top-level structure that define three fields: a primary
<code>BS3MenuBar</code>, secondary <code>BS3MenuBar</code> and tertiary
<code>BS3MenuBar</code>. The <a href="../ugvw/ugvw.html">Wicket viewer</a>
places the primary bar to the left, the secondary bar aligned right, and the
tertiary bar (expected to consist of just one <code>BS3Menu</code>) under the
user names.</p>
+ </div> </li>
+ <li> <p><code>BS3MenuBar</code></p>
+ <div class="paragraph">
+ <p>consisting of one or many <code>BS3Menu</code>s.</p>
+ </div> </li>
+ <li> <p><code>BS3Menu</code></p>
+ <div class="paragraph">
+ <p>consisting of one or many <code>BS3MenuSection</code>s. The
<a href="../ugvw/ugvw.html">Wicket viewer</a> renders a separator between each
section.</p>
+ </div> </li>
+ <li> <p><code>BS3MenuSection</code></p>
+ <div class="paragraph">
+ <p>consisting of one or many actions
(<code>ServiceActionLayoutData</code>s)</p>
+ </div> </li>
+ </ul>
+ </div>
+ </div>
+ <div class="sect3">
+ <h4 id="_rgcms_classes_menubars_components">3.14.2. Components</h4>
+ <div class="btn-group" style="float: right; font-size: small;
padding: 6px; margin-top: -55px; ">
+ <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/rgcms/_rgcms_classes_menubars_components.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/rgcms/_rgcms_classes_menubars_components.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/rgcms/_rgcms_classes_menubars_components.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/rgcms/_rgcms_classes_menubars_components.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/rgcms/_rgcms_classes_menubars_components.adoc"
target="_blank"><i class="fa fa-hand-o-right fa-fw"
aria-hidden="true"></i> Blame</a></li>
+ </ul>
+ </div>
+ <div class="paragraph">
+ <p>The service action class reside in the
<code>org.apache.isis.applib.layout.component</code> package, consisting of
just:</p>
+ </div>
+ <div class="ulist">
+ <ul>
+ <li> <p><code>ServiceActionLayoutData</code> class</p>
+ <div class="paragraph">
+ <p>which correspond to the <a
href="../rgant/rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>
annotation.</p>
+ </div> </li>
+ </ul>
+ </div>
+ <div class="paragraph">
+ <p>This is similar to <code>ActionLayoutData</code> (of the <a
href="#_rgcms_classes_layout">object layout</a> classes), however it also
identifies the domain service to which it belongs. (This isnât required for
the object layouts because the owner in that case is implicit).</p>
+ </div>
+ </div>
+ <div class="sect3">
+ <h4 id="__rgcms_classes_layout_link">3.14.3. Link</h4>
+ <div class="paragraph">
+ <p>The link classes reside in the
<code>org.apache.isis.applib.layout.links</code> package, and consist of just
the <code>Link</code> class:</p>
+ </div>
+ <div class="listingblock">
+ <div class="content">
+ <pre class="CodeRay highlight"><code data-lang="java"><span
class="directive">public</span> <span class="type">class</span> <span
class="class">Link</span> {
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getRel() { ... } <i class="conum"
data-value="1"></i><b>(1)</b>
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getMethod() { ... } <i class="conum"
data-value="2"></i><b>(2)</b>
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getHref() { ... } <i class="conum"
data-value="3"></i><b>(3)</b>
+ <span class="directive">public</span> <span
class="predefined-type">String</span> getType() { ... } <i class="conum"
data-value="4"></i><b>(4)</b>
+ ...
+}</code></pre>
+ </div>
+ </div>
+ <div class="colist arabic">
+ <table>
+ <tbody>
+ <tr>
+ <td><i class="conum" data-value="1"></i><b>1</b></td>
+ <td>an "rel" (as defined by section 2.7.1.2 of the RO spec
v1.0), identifying the nature of the link.</td>
+ </tr>
+ <tr>
+ <td><i class="conum" data-value="2"></i><b>2</b></td>
+ <td>the HTTP method to access the link. This is always
"GET".</td>
+ </tr>
+ <tr>
+ <td><i class="conum" data-value="3"></i><b>3</b></td>
+ <td>The (absolute) URL to access the Restful Objects
resource.</td>
+ </tr>
+ <tr>
+ <td><i class="conum" data-value="4"></i><b>4</b></td>
+ <td>The media type (<code>Accept</code> header) that will be
returned by the URL.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="paragraph">
+ <p>The XSD for these classes is available at <a
href="http://isis.apache.org/applib/layout/links/links.xsd"
class="bare">http://isis.apache.org/applib/layout/links/links.xsd</a>.</p>
+ </div>
</div>
</div>
</div>
@@ -6444,7 +6681,7 @@ table.CodeRay td.code>pre{padding:0}
</tr>
<tr>
<td><i class="conum" data-value="7"></i><b>7</b></td>
- <td>the target object (or objects) to be invoked. As of
<code>1.13.0</code>, a bulk action will create multiple commands, each with
only a single target, but a future version of the framework may also support a
single bulk command against this multiple targets (ie all-or-nothing).</td>
+ <td>the target object (or objects) to be invoked. A bulk action
will create multiple commands, each with only a single target. (A future
version of the framework may also support a single bulk command against this
multiple targets, ie all-or-nothing).</td>
</tr>
<tr>
<td><i class="conum" data-value="8"></i><b>8</b></td>
@@ -7038,174 +7275,22 @@ table.CodeRay td.code>pre{padding:0}
</ul>
</div>
<div class="paragraph">
- <p>The "aim" schema defines the serialized form (or memento) of an
action invocation.</p>
- </div>
- <div class="admonitionblock warning">
- <table>
- <tbody>
- <tr>
- <td class="icon"> <i class="fa icon-warning" title="Warning"></i>
</td>
- <td class="content">
- <div class="paragraph">
- <p>This schema has been removed in <code>1.13.0</code>,
replaced with <a href="../rgcms/rgcms.html#_rgcms_schema-ixn">ixn.xsd</a> (for
action invocations/property edits) and with <a
href="../rgcms/rgcms.html#_rgcms_schema-cmd">cmd.xsd</a> (commands, ie the
<em>intention</em> to invoke an action/edit a property).</p>
- </div>
- <div class="paragraph">
- <p>The remaining content on this page describes how
<code>CommandContext</code> works up to v1.12.x. However, as of
<code>1.13.0</code> the <code>CommandContext</code> uses its own
<code>cmd.xsd</code> schema).</p>
- </div> </td>
- </tr>
- </tbody>
- </table>
+ <p>The "aim" schema previously defined the serialized form (or
memento) of an action invocation.</p>
</div>
<div class="paragraph">
- <p>Action invocations are captured (in memory rather than in
serialized form) when the end-user invokes the action "through" the UI, by way
of the <a
href="../rgsvc/rgsvc.html#_rgsvc_application-layer-api_CommandContext">CommandContext</a>
service. Using the <code>ActionInvocationMementoDtoUtils</code> utility class,
a service can instantiate <code>ActionInvocationMementoDto</code> which can
then be serialized to/from using the same
<code>ActionInvocationMementoDtoUtils</code> class.</p>
- </div>
- <div class="listingblock">
- <div class="content">
- <pre class="CodeRay highlight"><code data-lang="xml"><span
class="preprocessor"><?xml version="1.0" encoding="UTF-8"?></span>
-<span class="tag"><xs:schema</span> <span
class="attribute-name">targetNamespace</span>=<span class="string"><span
class="delimiter">"</span><span
class="content">http://isis.apache.org/schema/aim</span><span
class="delimiter">"</span></span> <i class="conum"
data-value="1"></i><b>(1)</b>
- <span class="attribute-name">elementFormDefault</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">qualified</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:xs</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">http://www.w3.org/2001/XMLSchema</span><span
class="delimiter">"</span></span>
- <span class="attribute-name">xmlns</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">http://isis.apache.org/schema/aim</span><span
class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:common</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">http://isis.apache.org/schema/common</span><span
class="delimiter">"</span></span><span class="tag">></span>
-
- <span class="tag"><xs:import</span> <span
class="attribute-name">namespace</span>=<span class="string"><span
class="delimiter">"</span><span
class="content">http://isis.apache.org/schema/common</span><span
class="delimiter">"</span></span> <i class="conum"
data-value="2"></i><b>(2)</b>
- <span class="attribute-name">schemaLocation</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">http://isis.apache.org/schema/common/common-1.0.xsd</span><span
class="delimiter">"</span></span><span class="tag">/></span>
-
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span
class="content">actionInvocationMementoDto</span><span
class="delimiter">"</span></span><span class="tag">></span>
<i class="conum" data-value="3"></i><b>(3)</b>
- <span class="tag"><xs:complexType></span>
- <span class="tag"><xs:sequence></span>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">metadata</span><span
class="delimiter">"</span></span><span class="tag">></span>
- <span class="tag"><xs:complexType></span>
- <span class="tag"><xs:sequence></span>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">transactionId</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:string</span><span
class="delimiter">"</span></span><span class="tag">/></span> <i
class="conum" data-value="4"></i><b>(4)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">sequence</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:int</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="5"></i><b>(5)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">timestamp</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:dateTime</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="6"></i><b>(6)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">target</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">common:oidDto</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="7"></i><b>(7)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">targetClass</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:string</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="8"></i><b>(8)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">targetAction</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:string</span><span
class="delimiter">"</span></span><span class="tag">/></span> <i
class="conum" data-value="9"></i><b>(9)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">actionIdentifier</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:string</span><span
class="delimiter">"</span></span><span class="tag">/></span> <i
class="conum" data-value="10"></i><b>(10)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">user</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:string</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="11"></i><b>(11)</b>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">title</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:string</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="12"></i><b>(12)</b>
- <span class="tag"></xs:sequence></span>
- <span class="tag"></xs:complexType></span>
- <span class="tag"></xs:element></span>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">payload</span><span
class="delimiter">"</span></span><span class="tag">></span>
- <span class="tag"><xs:complexType></span>
- <span class="tag"><xs:sequence></span>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">parameters</span><span
class="delimiter">"</span></span><span class="tag">></span>
<i class="conum" data-value="13"></i><b>(13)</b>
- <span class="tag"><xs:complexType></span>
- <span class="tag"><xs:sequence</span>
<span class="attribute-name">maxOccurs</span>=<span class="string"><span
class="delimiter">"</span><span class="content">unbounded</span><span
class="delimiter">"</span></span><span class="tag">></span>
- <span
class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">param</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">paramDto</span><span
class="delimiter">"</span></span><span class="tag">/></span>
- <span
class="tag"></xs:sequence></span>
- <span class="tag"><xs:attribute</span>
<span class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">num</span><span
class="delimiter">"</span></span> <span class="attribute-name">use</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">required</span><span class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:int</span><span
class="delimiter">"</span></span><span class="tag">/></span>
- <span
class="tag"></xs:complexType></span>
- <span class="tag"></xs:element></span>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">return</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">common:valueDto</span><span
class="delimiter">"</span></span> <i class="conum"
data-value="14"></i><b>(14)</b>
- <span
class="attribute-name">minOccurs</span>=<span class="string"><span
class="delimiter">"</span><span class="content">0</span><span
class="delimiter">"</span></span> <span
class="attribute-name">maxOccurs</span>=<span class="string"><span
class="delimiter">"</span><span class="content">1</span><span
class="delimiter">"</span></span><span class="tag">/></span>
- <span class="tag"></xs:sequence></span>
- <span class="tag"></xs:complexType></span>
- <span class="tag"></xs:element></span>
- <span class="tag"></xs:sequence></span>
- <span class="tag"></xs:complexType></span>
- <span class="tag"></xs:element></span>
-
- <span class="tag"><xs:complexType</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">paramDto</span><span
class="delimiter">"</span></span><span class="tag">></span>
<i class="conum"
data-value="15"></i><b>(15)</b>
- <span class="tag"><xs:sequence></span>
- <span class="tag"><xs:element</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">value</span><span
class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">common:valueDto</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="16"></i><b>(16)</b>
- <span class="tag"></xs:sequence></span>
- <span class="tag"><xs:attribute</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">parameterName</span><span
class="delimiter">"</span></span> <span class="attribute-name">use</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">required</span><span class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:string</span><span
class="delimiter">"</span></span><span class="tag">/></span>
<i class="conum" data-value="17"></i><b>(17)</b>
- <span class="tag"><xs:attribute</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">parameterType</span><span
class="delimiter">"</span></span> <span class="attribute-name">use</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">required</span><span class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">common:valueType</span><span
class="delimiter">"</span></span><span class="tag">/></span>
- <span class="tag"><xs:attribute</span> <span
class="attribute-name">name</span>=<span class="string"><span
class="delimiter">"</span><span class="content">null</span><span
class="delimiter">"</span></span> <span class="attribute-name">use</span>=<span
class="string"><span class="delimiter">"</span><span
class="content">optional</span><span class="delimiter">"</span></span> <span
class="attribute-name">type</span>=<span class="string"><span
class="delimiter">"</span><span class="content">xs:boolean</span><span
class="delimiter">"</span></span><span class="tag">/></span>
- <span class="tag"></xs:complexType></span>
-<span class="tag"></xs:schema></span></code></pre>
- </div>
- </div>
- <div class="colist arabic">
- <table>
- <tbody>
- <tr>
- <td><i class="conum" data-value="1"></i><b>1</b></td>
- <td>the aim schema has a namespace URI of
"http://isis.apache.org/schema/aim". Although URIs are not the same as URLs,
you will find that the schemas are also downloadable from this location.</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="2"></i><b>2</b></td>
- <td>reuses the <a
href="../rgcms/rgcms.html#_rgcms_schema-common">common</a> schema</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="3"></i><b>3</b></td>
- <td>definition of the <code>actionInvocationMementoDto</code>
complex type. This consists of metadata (the transaction identifier, the target
object, the initiating user) and the payload (the action parameter/arguments,
the return value if known).</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="4"></i><b>4</b></td>
- <td>the unique transaction Id (a guid) allocated by the framework
for each and every transaction</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="5"></i><b>5</b></td>
- <td>a sequence number within the transaction. It is possible for
there to be more than one action invocation to be</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="6"></i><b>6</b></td>
- <td>when the action was invoked</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="7"></i><b>7</b></td>
- <td>target object, as an OID (using <code>oidDto</code> from the
<a href="../rgcms/rgcms.html#_rgcms_schema-common">common</a> schema)</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="8"></i><b>8</b></td>
- <td>fully qualified class name of the target object, for
information only</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="9"></i><b>9</b></td>
- <td>name of the action, for information only</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="10"></i><b>10</b></td>
- <td>Javadoc style unique identifier for the action.</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="11"></i><b>11</b></td>
- <td>User that invoked the action</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="12"></i><b>12</b></td>
- <td>title of the target object, for information only</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="13"></i><b>13</b></td>
- <td>Collection of parameter/arguments, defined in terms of the
<code>paramDto</code> complex type (discussed just below)</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="14"></i><b>14</b></td>
- <td>The return value of the action, if known (and not void)</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="15"></i><b>15</b></td>
- <td>The <code>paramDto</code> defines both an action parameter
and its corresponding argument values</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="16"></i><b>16</b></td>
- <td>The value of the parameter, in other words an argument
value</td>
- </tr>
- <tr>
- <td><i class="conum" data-value="17"></i><b>17</b></td>
- <td>Metadata about the parameter itself: its name, type,
optionality.</td>
- </tr>
- </tbody>
- </table>
+ <p>The schema was removed in <code>1.13.0</code>, and was replaced
by:</p>
</div>
- <div class="admonitionblock note">
- <table>
- <tbody>
- <tr>
- <td class="icon"> <i class="fa icon-note" title="Note"></i> </td>
- <td class="content">
- <div class="paragraph">
- <p>As of <code>1.11.0</code> through <code>1.12.2</code> this
schema is not used directly by the framework; in particular
<code>Command#setMemento(â¦â)</code> sets a similar but less formal XML
structure. This may change in the future.</p>
- </div> </td>
- </tr>
- </tbody>
- </table>
+ <div class="ulist">
+ <ul>
+ <li> <p><a
href="../rgcms/rgcms.html#_rgcms_schema-ixn">ixn.xsd</a></p>
+ <div class="paragraph">
+ <p>for action invocations/property edits, and</p>
+ </div> </li>
+ <li> <p><a
href="../rgcms/rgcms.html#_rgcms_schema-cmd">cmd.xsd</a></p>
+ <div class="paragraph">
+ <p>for commands, ie the <em>intention</em> to invoke an
action/edit a property.</p>
+ </div> </li>
+ </ul>
</div>
</div>
<div class="sect2">