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">&quot;</span><span class="content">File name</span><span class="delimiter">&quot;</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&#8217;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">&quot;</span><span class="content">.jdo file name</span><span class="delimiter">&quot;</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>&lt;?&gt; 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>&lt;?&gt; 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>&lt;?&gt; 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>&lt;?&gt; domainClass);    <i class="conum" data-value="1"></i><b>(1)</b>
-    Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; 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>&lt;?&gt; domainClass);          <i class="conum" data-value="2"></i><b>(2)</b>
+    <span class="type">boolean</span> existsFor(<span class="predefined-type">Class</span>&lt;?&gt; domainClass);    <i class="conum" data-value="3"></i><b>(3)</b>
+    Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; 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>&lt;?&gt; domainClass);    <i class="conum" data-value="1"></i><b>(1)</b>
-    Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; domainClass);      <i class="conum" data-value="2"></i><b>(2)</b>
-    Grid defaultGridFor(<span class="predefined-type">Class</span>&lt;?&gt; 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>&lt;?&gt; domainClass);          <i class="conum" data-value="2"></i><b>(2)</b>
+    <span class="type">boolean</span> existsFor(<span class="predefined-type">Class</span>&lt;?&gt; domainClass);    <i class="conum" data-value="3"></i><b>(3)</b>
+    Grid load(<span class="directive">final</span> <span class="predefined-type">Class</span>&lt;?&gt; domainClass);      <i class="conum" data-value="4"></i><b>(4)</b>
+    Grid defaultGridFor(<span class="predefined-type">Class</span>&lt;?&gt; 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&#8217;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&#8217;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&#8217;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">&lt;id&gt;</span>xjc-generate<span class="tag">&lt;/id&gt;</span>
                     <span class="tag">&lt;phase&gt;</span>generate-sources<span class="tag">&lt;/phase&gt;</span>
                     <span class="tag">&lt;goals&gt;</span>
-                    <span class="tag">&lt;goal&gt;</span>generate<span class="tag">&lt;/goal&gt;</span>
+                        <span class="tag">&lt;goal&gt;</span>generate<span class="tag">&lt;/goal&gt;</span>
                     <span class="tag">&lt;/goals&gt;</span>
                 <span class="tag">&lt;/execution&gt;</span>
             <span class="tag">&lt;/executions&gt;</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>&quot;We normally don't see anything at all for the first three months, and now you're showing me working screens after two weeks&quot;</p>
                                             <small>Project programme manager</small>