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 2016/03/09 09:17:46 UTC
isis-site git commit: ISIS-1317: Object_rebuildMetamodel mixin;
also changes to supporting services.
Repository: isis-site
Updated Branches:
refs/heads/asf-site a6ed55ab8 -> f7264a12b
ISIS-1317: Object_rebuildMetamodel mixin; also changes to supporting services.
Specifically:
- GridService (and GridLoaderService), to remove grid for a domain class
- MetaModelService, to invalidate and recreate an ObjectSpecification
In addition:
- in GridService/GridLoaderService, introduced supportsReloading() rather than using deploymentCategory#isProduction() directly. This will make it easier to be overridden in application code.
Also updated docs.
Project: http://git-wip-us.apache.org/repos/asf/isis-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis-site/commit/f7264a12
Tree: http://git-wip-us.apache.org/repos/asf/isis-site/tree/f7264a12
Diff: http://git-wip-us.apache.org/repos/asf/isis-site/diff/f7264a12
Branch: refs/heads/asf-site
Commit: f7264a12bcda7c2cc3f35d9ffd792041458d56aa
Parents: a6ed55a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Mar 9 08:02:05 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Mar 9 08:02:05 2016 +0000
----------------------------------------------------------------------
content/guides/rgcms.html | 99 ++++++++++++++++++++++++++++++++----------
content/guides/rgsvc.html | 57 +++++++++++++++++-------
content/guides/ugbtb.html | 23 +++++++++-
content/index.html | 12 +++++
4 files changed, 151 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis-site/blob/f7264a12/content/guides/rgcms.html
----------------------------------------------------------------------
diff --git a/content/guides/rgcms.html b/content/guides/rgcms.html
index cbf756b..55457c9 100644
--- a/content/guides/rgcms.html
+++ b/content/guides/rgcms.html
@@ -4937,15 +4937,17 @@ the current timestamp whenever it is modified in a transaction.</p>
<div class="paragraph">
<p>(As of <code>1.12.0-SNAPSHOT</code>) 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="sect4">
+<h5 id="_rgcms_classes_mixins_Object_downloadLayoutXml"><code>downloadLayoutXml()</code></h5>
<div class="paragraph">
-<p>The <code>Object_downloadLayoutXml</code> mixin defines the following action:</p>
+<p>The <code>Object_downloadLayoutXml</code> mixin provides an action to download the <a href="ugfun.html#_ugfun_object-layout_dynamic_xml">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="annotation">@Mixin</span>
-<span class="directive">public</span> <span class="type">class</span> <span class="class">Object_downloadLayoutXml</span> {
- <span class="directive">public</span> Object_downloadLayoutXml(<span class="directive">final</span> <span class="predefined-type">Object</span> object) { ... } <i class="conum" data-value="1"></i><b>(1)</b>
- <span class="directive">public</span> <span class="predefined-type">String</span> downloadLayoutXml(<span class="directive">final</span> <span class="predefined-type">String</span> fileName) { ... } <i class="conum" data-value="2"></i><b>(2)</b>
+<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>
@@ -4954,31 +4956,63 @@ the current timestamp whenever it is modified in a transaction.</p>
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>provided as an action to all objects</td>
-</tr>
-<tr>
-<td><i class="conum" data-value="2"></i><b>2</b></td>
-<td>actually this method is called '$$' in the code, a "special case" that means to use the derive the action name
-from the class name.</td>
+<td>either current, complete, normalized or minimal.</td>
</tr>
</table>
</div>
-<div class="sect4">
-<h5 id="_appearance_in_the_ui">Appearance in the UI</h5>
<div class="paragraph">
-<p>This mixin property are all associated with the "Metadata" fieldset.</p>
+<p>See the documentation on <a href="ugfun.html#_ugfun_object-layout_dynamic_xml">layout XML</a> and also
+the <a href="rgsvc.html#_rgsvc_api_LayoutService"><code>LayoutService</code></a> for more information on these styles</p>
+</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.</p>
</div>
<div class="paragraph">
<p>A number of other <a href="#_rgcms_classes_mixins_Persistable">mixins</a> also contribute properties and actions to the "Metadata" fieldset.</p>
</div>
</div>
-<div class="sect4">
-<h5 id="_related_services">Related Services</h5>
+<div class="sect5">
+<h6 id="_related_services">Related Services</h6>
<div class="paragraph">
<p>This mixin calls <a href="rgsvc.html#_rgsvc_api_LayoutService"><code>LayoutService</code></a> to obtain the layout XML.</p>
</div>
</div>
</div>
+<div class="sect4">
+<h5 id="_rgcms_classes_mixins_Object_rebuildMetamodel"><code>rebuildMetamodel()</code></h5>
+<div class="paragraph">
+<p>The <code>Object_rebuildMetamodel</code> mixin provides the ability to discard the current internal metamodel data (an instance
+of <code>ObjectSpecification</code>) for the domain class of the rendered object, and recreate from code and other sources (most
+notably, layout XML data). 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="type">void</span> rebuildMetamodel() {
+ ...
+}</code></pre>
+</div>
+</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_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.html#_rgsvc_api_MetaModelService"><code>MetaModelService</code></a> and the
+<a href="rgsvc.html#_rgsvc_spi_GridService"><code>GridService</code></a> to invalidate their caches.</p>
+</div>
+</div>
+</div>
+</div>
<div class="sect3">
<h4 id="_rgcms_classes_mixins_Dto">3.12.2. <code>Dto</code></h4>
<div class="paragraph">
@@ -5057,7 +5091,7 @@ optionally ignore the common <a href="#_rgcms_schema">Apache Isis schemas</a> (u
referenced by the DTO).</p>
</div>
<div class="sect4">
-<h5 id="_related_services_2">Related Services</h5>
+<h5 id="_related_services_3">Related Services</h5>
<div class="paragraph">
<p>The <code>Dto_downloadXml</code> and <code>Dto_downloadXsd</code> delegate to the
<a href="rgsvc.html#_rgsvc_api_JaxbService"><code>JaxbService</code></a> to actually generate the XML/XSD.</p>
@@ -5075,10 +5109,27 @@ need to write any code to obtain the mixins that contribute to this interface.</
<h5 id="_rgcms_classes_mixins_Persistable_downloadJdoMetadata"><code>downloadJdoMetadata()</code></h5>
<div class="paragraph">
<p>The <code>Persistable_downloadJdoMetadata</code> mixin provides an action which allows the
-JDO <a href="http://www.datanucleus.org/products/datanucleus/jdo/metadata_xml.html">class metadata</a> to be downloaded as XML. The mixin’s action returns the XML text wrapped up in a <a href="#_rgcms_classes_value-types_Clob"><code>Clob</code></a>.</p>
+JDO <a href="http://www.datanucleus.org/products/datanucleus/jdo/metadata_xml.html">class metadata</a> to be downloaded as XML. 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">Clob</span> downloadJdoMetadata( <i class="conum" data-value="1"></i><b>(1)</b>
+ <span class="annotation">@ParameterLayout</span>(named = <span class="string"><span class="delimiter">"</span><span class="content">.jdo file name</span><span class="delimiter">"</span></span>)
+ <span class="directive">final</span> <span class="predefined-type">String</span> fileName) {
+ ...
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>returns the XML text wrapped up in a <a href="#_rgcms_classes_value-types_Clob"><code>Clob</code></a>.</td>
+</tr>
+</table>
</div>
<div class="sect5">
-<h6 id="_appearance_in_the_ui_2">Appearance in the UI</h6>
+<h6 id="_appearance_in_the_ui_3">Appearance in the UI</h6>
<div class="paragraph">
<p>(As of <code>1.12.0-SNAPSHOT</code>), this mixin action is associated with the "Metadata" fieldset, and will appear as a panel drop-down action.</p>
</div>
@@ -5087,7 +5138,7 @@ JDO <a href="http://www.datanucleus.org/products/datanucleus/jdo/metadata_xml.ht
</div>
</div>
<div class="sect5">
-<h6 id="_related_services_3">Related Services</h6>
+<h6 id="_related_services_4">Related Services</h6>
<div class="paragraph">
<p>The mixin delegates to the <a href="rgsvc.html#_rgsvc_api_IsisJdoSupport"><code>IsisJdoSupport</code></a> service to obtain
a reference to the JDO <code>PersistenceManagerFactory</code>.</p>
@@ -5113,7 +5164,7 @@ a reference to the JDO <code>PersistenceManagerFactory</code>.</p>
</ul>
</div>
<div class="sect5">
-<h6 id="_appearance_in_the_ui_3">Appearance in the UI</h6>
+<h6 id="_appearance_in_the_ui_4">Appearance in the UI</h6>
<div class="paragraph">
<p>These mixin properties are all associated with the "Metadata" fieldset. The <a href="#_rgcms_classes_mixins_Object">Object mixin</a> also contribute an action to the "Metadata" fieldset.</p>
</div>
@@ -5807,13 +5858,13 @@ but less formal XML structure. This may change in the future.</p>
<ul class="sectlevel3">
<li><a href="#_rgcms_classes_mixins_Object">3.12.1. <code>Object</code> (<code>1.12.0-SNAPSHOT</code>)</a>
<ul class="sectlevel4">
-<li><a href="#_appearance_in_the_ui">Appearance in the UI</a></li>
-<li><a href="#_related_services">Related Services</a></li>
+<li><a href="#_rgcms_classes_mixins_Object_downloadLayoutXml"><code>downloadLayoutXml()</code></a></li>
+<li><a href="#_rgcms_classes_mixins_Object_rebuildMetamodel"><code>rebuildMetamodel()</code></a></li>
</ul>
</li>
<li><a href="#_rgcms_classes_mixins_Dto">3.12.2. <code>Dto</code></a>
<ul class="sectlevel4">
-<li><a href="#_related_services_2">Related Services</a></li>
+<li><a href="#_related_services_3">Related Services</a></li>
</ul>
</li>
<li><a href="#_rgcms_classes_mixins_Persistable">3.12.3. <code>Persistable</code></a>
http://git-wip-us.apache.org/repos/asf/isis-site/blob/f7264a12/content/guides/rgsvc.html
----------------------------------------------------------------------
diff --git a/content/guides/rgsvc.html b/content/guides/rgsvc.html
index 10d1baf..6d11f09 100644
--- a/content/guides/rgsvc.html
+++ b/content/guides/rgsvc.html
@@ -4581,6 +4581,8 @@ further in this <a href="ugfun.html#_ugfun_how-tos_replacing-default-service-imp
<span class="predefined-type">Class</span><?> fromObjectType(<span class="directive">final</span> <span class="predefined-type">String</span> objectType); <i class="conum" data-value="1"></i><b>(1)</b>
<span class="annotation">@Programmatic</span>
<span class="predefined-type">String</span> toObjectType(<span class="directive">final</span> <span class="predefined-type">Class</span><?> domainType); <i class="conum" data-value="2"></i><b>(2)</b>
+ <span class="annotation">@Programmatic</span>
+ <span class="type">void</span> rebuild(<span class="directive">final</span> <span class="predefined-type">Class</span><?> domainType); <i class="conum" data-value="3"></i><b>(3)</b>
}</code></pre>
</div>
</div>
@@ -4594,6 +4596,11 @@ further in this <a href="ugfun.html#_ugfun_how-tos_replacing-default-service-imp
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>lookup of a domain class' object type</td>
</tr>
+<tr>
+<td><i class="conum" data-value="3"></i><b>3</b></td>
+<td>(<code>1.12.0-SNAPSHOT</code>) invalidate and rebuild the internal metadata (an <code>ObjectSpecification</code>) for the specified
+domain type.</td>
+</tr>
</table>
</div>
</div>
@@ -7628,8 +7635,10 @@ further in this <a href="ugfun.html#_ugfun_how-tos_replacing-default-service-imp
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">GridLoaderService</span> {
- <span class="type">boolean</span> existsFor(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="1"></i><b>(1)</b>
- Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="2"></i><b>(2)</b>
+ <span class="type">boolean</span> supportsReloading(); <i class="conum" data-value="1"></i><b>(1)</b>
+ <span class="type">void</span> remove(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="2"></i><b>(2)</b>
+ <span class="type">boolean</span> existsFor(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="3"></i><b>(3)</b>
+ Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="4"></i><b>(4)</b>
}</code></pre>
</div>
</div>
@@ -7637,10 +7646,18 @@ further in this <a href="ugfun.html#_ugfun_how-tos_replacing-default-service-imp
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>whether any persisted layout metadata (eg a <code>.layout.xml</code> file) exists for this domain class.</td>
+<td>whether dynamic reloading of layouts is enabled. The default implementation enables reloading for prototyping, disables in production</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>support metamodel invalidation/rebuilding of spec, eg as called by this <a href="rgcms.html#_rgcms_classes_mixins_Object_rebuildMetamodel">Object mixin</a> action.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="3"></i><b>3</b></td>
+<td>whether any persisted layout metadata (eg a <code>.layout.xml</code> file) exists for this domain class.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>returns a new instance of a <a href="rgcms.html#_rgcms_classes_layout_component"><code>Grid</code></a> for the specified domain class, eg as loaded from a <code>layout.xml</code> file. If none exists, will return null (and the calling <a href="#_rgsvc_spi_GridService"><code>GridService</code></a> will use <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a> to obtain a default grid for the domain class).</td>
</tr>
</table>
@@ -7705,12 +7722,14 @@ Isis' internal metamodel, in other words to ensure that all of the domain object
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">GridService</span> {
- <span class="type">boolean</span> existsFor(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="1"></i><b>(1)</b>
- Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="2"></i><b>(2)</b>
- Grid defaultGridFor(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="3"></i><b>(3)</b>
- Grid normalize(<span class="directive">final</span> Grid grid); <i class="conum" data-value="4"></i><b>(4)</b>
- Grid complete(Grid grid); <i class="conum" data-value="5"></i><b>(5)</b>
- Grid minimal(Grid grid); <i class="conum" data-value="6"></i><b>(6)</b>
+ <span class="type">boolean</span> supportsReloading(); <i class="conum" data-value="1"></i><b>(1)</b>
+ <span class="type">void</span> remove(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="2"></i><b>(2)</b>
+ <span class="type">boolean</span> existsFor(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="3"></i><b>(3)</b>
+ Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="4"></i><b>(4)</b>
+ Grid defaultGridFor(<span class="predefined-type">Class</span><?> domainClass); <i class="conum" data-value="5"></i><b>(5)</b>
+ Grid normalize(<span class="directive">final</span> Grid grid); <i class="conum" data-value="6"></i><b>(6)</b>
+ Grid complete(Grid grid); <i class="conum" data-value="7"></i><b>(7)</b>
+ Grid minimal(Grid grid); <i class="conum" data-value="8"></i><b>(8)</b>
}</code></pre>
</div>
</div>
@@ -7718,32 +7737,40 @@ Isis' internal metamodel, in other words to ensure that all of the domain object
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
-<td>whether any persisted layout metadata (eg a <code>.layout.xml</code> file) exists for this domain class. Just delegates to corresponding method in <a href="#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a>.</td>
+<td>whether dynamic reloading of layouts is enabled. The default implementation enables reloading for prototyping, disables in production</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
-<td>returns a new instance of a <a href="rgcms.html#_rgcms_classes_layout_component"><code>Grid</code></a> for the specified domain class, eg as loaded from a <code>layout.xml</code> file. If none exists, will return null (and the calling <a href="#_rgsvc_spi_GridService"><code>GridService</code></a> will use <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a> to obtain a default grid for the domain class).</td>
+<td>support metamodel invalidation/rebuilding of spec, eg as called by this <a href="rgcms.html#_rgcms_classes_mixins_Object_rebuildMetamodel">Object mixin</a> action.</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
-<td>returns a default grid, eg two columns in ratio 4:8. Used when no existing grid layout exists for a domain class.</td>
+<td>whether any persisted layout metadata (eg a <code>.layout.xml</code> file) exists for this domain class. Just delegates to corresponding method in <a href="#_rgsvc_spi_GridLoaderService"><code>GridLoaderService</code></a>.</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
-<td>validates and normalizes a grid, modifying the grid so that all of the domain object’s members (properties, collections, actions) are bound to regions of the grid. This is done using existing metadata, most notably that of the <a href="rgant.html#_rgant_MemberOrder"><code>@MemberOrder</code></a> annotation. Such a grid, if persisted as the layout XML file for the domain class, allows the <code>@MemberOrder</code> annotation to be removed from the source code of the domain class (but other annotations must be retained).</td>
+<td>returns a new instance of a <a href="rgcms.html#_rgcms_classes_layout_component"><code>Grid</code></a> for the specified domain class, eg as loaded from a <code>layout.xml</code> file. If none exists, will return null (and the calling <a href="#_rgsvc_spi_GridService"><code>GridService</code></a> will use <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a> to obtain a default grid for the domain class).</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
-<td>Takes a normalized grid and enriches it with additional metadata (taken from Apache Isis' internal metadata) that can be represented in the layout XML. Such a grid, if persisted as the layout XML file for the domain class, allows all layout annotations (<a href="rgant.html#_rgant_ActionLayout"><code>@ActionLayout</code></a>, <a href="rgant.html#_rgant_PropertyLayout"><code>@PropertyLayout</code></a> and <a href="rgant.html#_rgant_CollectionLayout"><code>@CollectionLayout</code></a>) to be removed from the source code of the domain class.</td>
+<td>returns a default grid, eg two columns in ratio 4:8. Used when no existing grid layout exists for a domain class.</td>
</tr>
<tr>
<td><i class="conum" data-value="6"></i><b>6</b></td>
+<td>validates and normalizes a grid, modifying the grid so that all of the domain object’s members (properties, collections, actions) are bound to regions of the grid. This is done using existing metadata, most notably that of the <a href="rgant.html#_rgant_MemberOrder"><code>@MemberOrder</code></a> annotation. Such a grid, if persisted as the layout XML file for the domain class, allows the <code>@MemberOrder</code> annotation to be removed from the source code of the domain class (but other annotations must be retained).</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="7"></i><b>7</b></td>
+<td>Takes a normalized grid and enriches it with additional metadata (taken from Apache Isis' internal metadata) that can be represented in the layout XML. Such a grid, if persisted as the layout XML file for the domain class, allows all layout annotations (<a href="rgant.html#_rgant_ActionLayout"><code>@ActionLayout</code></a>, <a href="rgant.html#_rgant_PropertyLayout"><code>@PropertyLayout</code></a> and <a href="rgant.html#_rgant_CollectionLayout"><code>@CollectionLayout</code></a>) to be removed from the source code of the domain class.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="8"></i><b>8</b></td>
<td>Takes a normalized grid and strips out removes all members, leaving only the grid structure. Such a grid, if persisted as the layout XML file for the domain class, requires that the <a href="rgant.html#_rgant_MemberOrder"><code>@MemberOrder</code></a> annotation is retained in the source code of said class in order to bind members to the regions of the grid.</td>
</tr>
</table>
</div>
<div class="paragraph">
-<p>The first two methods just delegate to the corresponding methods in <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>, while the last four delegate to the corresponding method in <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>. The service inspects the <code>Grid</code>'s concrete class to determine which actual <code>GridSystemService</code> instance to delegate to.</p>
+<p>The first four methods just delegate to the corresponding methods in <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>, while the last four delegate to the corresponding method in <a href="#_rgsvc_spi_GridSystemService"><code>GridSystemService</code></a>. The service inspects the <code>Grid</code>'s concrete class to determine which actual <code>GridSystemService</code> instance to delegate to.</p>
</div>
</div>
<div class="sect3">
http://git-wip-us.apache.org/repos/asf/isis-site/blob/f7264a12/content/guides/ugbtb.html
----------------------------------------------------------------------
diff --git a/content/guides/ugbtb.html b/content/guides/ugbtb.html
index 61f3bfc..84d8187 100644
--- a/content/guides/ugbtb.html
+++ b/content/guides/ugbtb.html
@@ -918,6 +918,27 @@ JAXB annotations. The serialized form of these view models is therefore XML, wh
to act as DTOs.</p>
</div>
<div class="paragraph">
+<p>In case it’s not obvious, these DTOs are still usable as "regular" view models; they will render in the
+<a href="ugvw.html">Wicket viewer</a> just like any other. In fact, these JAXB-annotated view models are in many regards the
+most powerful of all the various ways of writing view models:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>their entire state (collections as well as properties) is automatically managed from interaction to interaction.<br></p>
+<div class="paragraph">
+<p>In contrast, using <a href="rgant.html#_rgant_ViewModel"><code>@ViewModel</code></a> (or its
+<a href="rgant.html#_rgant_DomainObject_nature"><code>@DomainObject#nature()</code></a> equivalent) will only manage the state of
+properties, but not collections. And if using the <a href="rgcms.html#_rgcms_classes_super_ViewModel"><code>ViewModel</code></a>
+interface, then the programmer must write all the state management (lots of boilerplate).</p>
+</div>
+</li>
+<li>
+<p>(as of <code>1.12.0-SNAPSHOT</code>), JAXB-annotated view models are editable.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
<p>The examples in this section uses the DTO for <code>ToDoItem</code>, taken from the (non-ASF) <a href="http://github.com/isisaddons/isis-app-todoapp">Isis addons' todoapp</a>. This DTO is defined as follows:</p>
</div>
<div class="listingblock">
@@ -1386,7 +1407,7 @@ DTO from the XSD generated by the preceding profile:</p>
<span class="tag"><id></span>xjc-generate<span class="tag"></id></span>
<span class="tag"><phase></span>generate-sources<span class="tag"></phase></span>
<span class="tag"><goals></span>
- <span class="tag"><goal></span>generate<span class="tag"></goal></span>
+ <span class="tag"><goal></span>generate<span class="tag"></goal></span>
<span class="tag"></goals></span>
<span class="tag"></execution></span>
<span class="tag"></executions></span>
http://git-wip-us.apache.org/repos/asf/isis-site/blob/f7264a12/content/index.html
----------------------------------------------------------------------
diff --git a/content/index.html b/content/index.html
index 75dc5be..fd53aae 100644
--- a/content/index.html
+++ b/content/index.html
@@ -514,6 +514,18 @@
<blockquote>
<div class="row">
<div class="large-12 medium-12">
+ <p>As students most of us prefer sticking with business logic than spending much time with UX enhancements. Apache Isis provides a great platform to create a perfectly working prototypes with loads of inbuilt UX concerns and customizations without worrying a single bit on the GUI perspective.
+And I must say this: "Great Support from the development team"</p>
+ <small>Vishma Dias, University of Moratuwa, Sri Lanka.</small>
+ </div>
+ </div>
+ </blockquote>
+ </div>
+
+ <div>
+ <blockquote>
+ <div class="row">
+ <div class="large-12 medium-12">
<p>From a Sprint retrospective:</p>
<p>"We normally don't see anything at all for the first three months, and now you're showing me working screens after two weeks"</p>
<small>Project programme manager</small>