You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by bu...@apache.org on 2013/08/15 19:01:21 UTC

svn commit: r874781 - in /websites/staging/isis/trunk: cgi-bin/ content/ content/components/objectstores/jdo/

Author: buildbot
Date: Thu Aug 15 17:01:21 2013
New Revision: 874781

Log:
Staging update by buildbot for isis

Added:
    websites/staging/isis/trunk/content/components/objectstores/jdo/lazy-loading.html
    websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-blobs.html
    websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-joda-dates.html
    websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-mandatory-and-optional-properties.html
Removed:
    websites/staging/isis/trunk/content/components/objectstores/jdo/dates-blobs-lazy-loading.html
Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    websites/staging/isis/trunk/content/components/objectstores/jdo/about.html
    websites/staging/isis/trunk/content/documentation.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Aug 15 17:01:21 2013
@@ -1 +1 @@
-1514332
+1514375

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Aug 15 17:01:21 2013
@@ -1 +1 @@
-1514332
+1514375

Modified: websites/staging/isis/trunk/content/components/objectstores/jdo/about.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/about.html (original)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/about.html Thu Aug 15 17:01:21 2013
@@ -254,13 +254,12 @@
 
 <p>The DataNucleus objectstore enables the persistence of domain objects using the JDO API.  <a href="http://datanucleus.org">DataNucleues</a> is the reference implementation for JDO.</p>
 
-<h3>Hints and tips:</h3>
+<h3>Isis Hints and tips:</h3>
 
 <ul>
 <li><a href="datanucleus-and-eclipse.html">DataNucleus and Eclipse</a></li>
 <li><a href="datanucleus-and-maven.html">DataNucleus and Maven</a></li>
 <li><a href="persistence_xml.html"><code>persistence.xml</code> file</a></li>
-<li><a href="dates-blobs-lazy-loading.html">Dates, Blobs and Lazy Loading</a></li>
 <li><a href="managed-1-to-m-relationships.html">Managed 1:m bidirectional relationships</a></li>
 <li><a href="using-jndi-datasource.html">Using a JNDI Datasource</a></li>
 <li><a href="isisjdosupport-service.html">Using the <code>IsisJdoSupport</code> service</a></li>
@@ -268,6 +267,16 @@
 <li><a href="deploying-on-the-google-app-engine.html">Deploying on the Google App Engine</a></li>
 </ul>
 
+<h5>JDO Mapping Hints</h5>
+
+<ul>
+<li><a href="mapping-mandatory-and-optional-properties.html">Mapping Mandatory and Optional Properties</a></li>
+<li><a href="mapping-joda-dates.html">Mapping JODA Dates</a></li>
+<li><a href="components/objectstores/jdo/mapping-blobs.html">Mapping Blobs</a></li>
+<li><a href="lazy-loading.html">Lazy Loading</a></li>
+<li><a href="managed-1-to-m-relationships.html">Managed 1:m bidirectional relationships</a></li>
+</ul>
+
 <h3>Applib Service Implementations:</h3>
 
 <ul>

Added: websites/staging/isis/trunk/content/components/objectstores/jdo/lazy-loading.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/lazy-loading.html (added)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/lazy-loading.html Thu Aug 15 17:01:21 2013
@@ -0,0 +1,319 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>Lazy Loading</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="./../../../bootstrap.css" rel="stylesheet">
+    <link href="./../../../prettify.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+        .markdown-content {
+            min-height: 500px;
+        }
+        .book-image img {
+          border: 1px;
+          border-style: solid;
+        }
+        .release-matrix .heading {
+            background-color: #eeeeee;
+        }
+        .release-matrix .new {
+            color: #dd0000;
+            font-weight: bolder;
+        }
+        .stub,.note {
+            position: relative;
+            padding: 7px 15px;
+            margin-bottom: 18px;
+            color: #404040;
+            background-color: #eedc94;
+            background-repeat: repeat-x;
+            background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+            background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+            background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+            background-image: linear-gradient(top, #fceec1, #eedc94);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+            border-color: #eedc94 #eedc94 #e4c652;
+            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+            text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+            border-width: 1px;
+            border-style: solid;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            border-radius: 4px;
+            -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+        }
+    </style>
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Lazy Loading",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../../images/favicon.ico">
+    <!--
+    <link rel="apple-touch-icon" href="./../../../images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="./../../../images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="./../../../images/apple-touch-icon-114x114.png">
+    -->
+
+    <script src="./../../../javascript/prettify.js" type="text/javascript"></script>
+    <script src="./../../../javascript/jquery-latest.js"></script>
+
+
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <script src="./../../../javascript/common.js"></script>
+    <script src="./../../../javascript/prettyprint.js"></script>
+
+    <script src="./../../../javascript/bootstrap-alert.js"></script>
+    <script src="./../../../javascript/bootstrap-dropdown.js"></script>
+    <script src="./../../../javascript/bootstrap-tooltip.js"></script>
+    <!--
+    <script src="./../../../javascript/bootstrap-alerts.js"></script>
+    -->
+    <script src="./../../../javascript/bootstrap-modal.js"></script>
+    <script src="./../../../javascript/bootstrap-transition.js"></script>
+    <script src="./../../../javascript/bootstrap-button.js"></script>
+    <script src="./../../../javascript/bootstrap-popover.js"></script>
+    <script src="./../../../javascript/bootstrap-scrollspy.js"></script>
+    <script src="./../../../javascript/bootstrap-typeahead.js"></script>
+    <script src="./../../../javascript/bootstrap-carousel.js"></script>
+    <script src="./../../../javascript/bootstrap-tab.js"></script>
+    <script src="./../../../javascript/bootstrap-collapse.js"></script>
+
+    
+    
+    
+
+    <script>
+    $(function () { prettyPrint() })
+    $().dropdown()
+    </script>
+
+    <!-- GAQ stuff removed here -->
+
+
+  </head>
+
+  <body>
+
+    <div class="topbar">
+      <div class="fill">
+        <div class="container">
+          <a class="brand" href="./../../../index.html">Apache Isis&trade;</a>
+          <ul class="nav">
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li>
+                  <a href="http://www.apache.org/">Apache Homepage <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/licenses/">Licenses <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/security/">Security <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/thanks.html">Thanks <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="./../../../more-thanks.html">More thanks <i class="icon-share-alt"></i></a>
+                </li>
+              </ul>
+            </li>
+            <li><a href="./../../../index.html">Home</a></li>
+            <li><a href="./../../../download.html">Download</a></li>
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Screenshots<b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li><a href="./../../../getting-started/screenshots.html">Screenshots</a></li>
+                <li><a href="./../../../getting-started/screencasts.html">Screencasts</a></li>
+                <li><a href="./../../../getting-started/powered-by.html">Powered by</a></li>
+                <!--
+                <li><a href="#">Online Demo</a></li>
+                -->
+              </ul>
+            </li>
+            <li><a href="./../../../documentation.html">Documentation</a></li>
+            <li><a href="./../../../support.html">Support</a></li>
+
+          </ul>
+
+          <!-- Google CSE Search Box Begins -->
+          <div style="float: right; position: relative; ">
+
+          <!--
+              <form action="http://www.google.com/cse" id="cse-search-box" _lpchecked="1">
+                <div>
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                    <input type="hidden" name="ie" value="UTF-8">
+                    <input type="text" name="q" placeholder="Search" size="31" style="border: 1px solid rgb(126, 157, 185); padding: 2px; background-color: rgb(255, 255, 255); background-position: 0% 50%; background-repeat: no-repeat no-repeat;">
+                    <input type="submit" name="sa" value="Search">
+                </div>
+                <input name="siteurl" type="hidden" value="isis.apache.org">
+                <input name="ref" type="hidden" value="">
+                <input name="ss" type="hidden" value="677j458329j2">
+            </form>
+          -->
+          
+            <FORM class="pull-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                <INPUT type="hidden" name="cof" value="FORID:0">
+                <INPUT name="q" type="text" placeholder="Search">
+            </FORM>
+
+          </div>
+       <!-- Google CSE Search Box Ends -->
+        
+        </div>
+      </div>
+    </div>
+
+    <div class="container">
+      <div class="markdown-content">
+      
+
+<div class="page-header">
+<p><a href="./../../../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../../../components/about.html">Components</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/about.html">Objectstores</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/jdo/about.html">Jdo</a></p>
+<h1>Lazy Loading
+
+</h1>
+</div>
+
+<p>By default, collections all rendered lazily and are thus also loaded lazily from the database.</p>
+
+<p>However, even in the case of collections that have annotated with <code>@Render(Type.EAGERLY)</code>, these should probably still be lazily loaded.  Otherwise, there will always be an unnecessary cost when rendering the object in a table.</p>
+
+<p>For example, in the <code>ToDoItem</code> (in the <a href="../../../getting-started/quickstart-archetype.html">wicket/restful/jdo archetype</a>) the <code>dependencies</code> collection is as follows:</p>
+
+<pre>
+  @javax.jdo.annotations.Persistent(table="TODO_DEPENDENCIES")
+  @javax.jdo.annotations.Join(column="DEPENDING_TODO_ID")
+  @javax.jdo.annotations.Element(column="DEPENDENT_TODO_ID")
+  private SortedSet<ToDoItem> dependencies = new TreeSet<ToDoItem>();
+
+  @Disabled
+  @MemberOrder(sequence = "1")
+  @Render(Type.EAGERLY)
+  public SortedSet<ToDoItem> getDependencies() {
+    return dependencies;
+  }
+  public void setDependencies(final SortedSet<ToDoItem> dependencies) {
+    this.dependencies = dependencies;
+  }
+</pre>
+
+<p>Even though <code>@Render(Type.EAGERLY)</code>, the <code>@javax.jdo.annotations.Persistent</code> annotation leaves the <code>defaultFetchGroup</code> as its default, which for collections is "false".</p>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="display: none; ">
+            <div class="modal-header">
+                <a class="close" data-dismiss="modal">x</a>
+
+                <h3>Thank you for contributing to the documention!</h3>
+            </div>
+            <div class="modal-body">
+                <h4>Any help with the documentation is greatly appreciated.</h4>
+                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+                <!--[if gt IE 6]>
+                <h4>Internet Explorer Users</h4>
+                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+                <![endif]-->
+
+            </div>
+            <div class="modal-footer">
+                Do you have an Apache ID?
+                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+            </div>
+        </div>
+        <script src="./../../../javascript/bootstrap-modal.js"></script>
+
+      <footer>
+        <p>
+        Copyright &copy; 2012~2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        <br/>
+        Apache Isis, Isis, Apache, the Apache feather logo, and the Apache Isis project logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Added: websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-blobs.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-blobs.html (added)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-blobs.html Thu Aug 15 17:01:21 2013
@@ -0,0 +1,317 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>Mapping Blobs</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="./../../../bootstrap.css" rel="stylesheet">
+    <link href="./../../../prettify.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+        .markdown-content {
+            min-height: 500px;
+        }
+        .book-image img {
+          border: 1px;
+          border-style: solid;
+        }
+        .release-matrix .heading {
+            background-color: #eeeeee;
+        }
+        .release-matrix .new {
+            color: #dd0000;
+            font-weight: bolder;
+        }
+        .stub,.note {
+            position: relative;
+            padding: 7px 15px;
+            margin-bottom: 18px;
+            color: #404040;
+            background-color: #eedc94;
+            background-repeat: repeat-x;
+            background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+            background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+            background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+            background-image: linear-gradient(top, #fceec1, #eedc94);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+            border-color: #eedc94 #eedc94 #e4c652;
+            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+            text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+            border-width: 1px;
+            border-style: solid;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            border-radius: 4px;
+            -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+        }
+    </style>
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Mapping Blobs",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../../images/favicon.ico">
+    <!--
+    <link rel="apple-touch-icon" href="./../../../images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="./../../../images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="./../../../images/apple-touch-icon-114x114.png">
+    -->
+
+    <script src="./../../../javascript/prettify.js" type="text/javascript"></script>
+    <script src="./../../../javascript/jquery-latest.js"></script>
+
+
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <script src="./../../../javascript/common.js"></script>
+    <script src="./../../../javascript/prettyprint.js"></script>
+
+    <script src="./../../../javascript/bootstrap-alert.js"></script>
+    <script src="./../../../javascript/bootstrap-dropdown.js"></script>
+    <script src="./../../../javascript/bootstrap-tooltip.js"></script>
+    <!--
+    <script src="./../../../javascript/bootstrap-alerts.js"></script>
+    -->
+    <script src="./../../../javascript/bootstrap-modal.js"></script>
+    <script src="./../../../javascript/bootstrap-transition.js"></script>
+    <script src="./../../../javascript/bootstrap-button.js"></script>
+    <script src="./../../../javascript/bootstrap-popover.js"></script>
+    <script src="./../../../javascript/bootstrap-scrollspy.js"></script>
+    <script src="./../../../javascript/bootstrap-typeahead.js"></script>
+    <script src="./../../../javascript/bootstrap-carousel.js"></script>
+    <script src="./../../../javascript/bootstrap-tab.js"></script>
+    <script src="./../../../javascript/bootstrap-collapse.js"></script>
+
+    
+    
+    
+
+    <script>
+    $(function () { prettyPrint() })
+    $().dropdown()
+    </script>
+
+    <!-- GAQ stuff removed here -->
+
+
+  </head>
+
+  <body>
+
+    <div class="topbar">
+      <div class="fill">
+        <div class="container">
+          <a class="brand" href="./../../../index.html">Apache Isis&trade;</a>
+          <ul class="nav">
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li>
+                  <a href="http://www.apache.org/">Apache Homepage <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/licenses/">Licenses <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/security/">Security <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/thanks.html">Thanks <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="./../../../more-thanks.html">More thanks <i class="icon-share-alt"></i></a>
+                </li>
+              </ul>
+            </li>
+            <li><a href="./../../../index.html">Home</a></li>
+            <li><a href="./../../../download.html">Download</a></li>
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Screenshots<b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li><a href="./../../../getting-started/screenshots.html">Screenshots</a></li>
+                <li><a href="./../../../getting-started/screencasts.html">Screencasts</a></li>
+                <li><a href="./../../../getting-started/powered-by.html">Powered by</a></li>
+                <!--
+                <li><a href="#">Online Demo</a></li>
+                -->
+              </ul>
+            </li>
+            <li><a href="./../../../documentation.html">Documentation</a></li>
+            <li><a href="./../../../support.html">Support</a></li>
+
+          </ul>
+
+          <!-- Google CSE Search Box Begins -->
+          <div style="float: right; position: relative; ">
+
+          <!--
+              <form action="http://www.google.com/cse" id="cse-search-box" _lpchecked="1">
+                <div>
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                    <input type="hidden" name="ie" value="UTF-8">
+                    <input type="text" name="q" placeholder="Search" size="31" style="border: 1px solid rgb(126, 157, 185); padding: 2px; background-color: rgb(255, 255, 255); background-position: 0% 50%; background-repeat: no-repeat no-repeat;">
+                    <input type="submit" name="sa" value="Search">
+                </div>
+                <input name="siteurl" type="hidden" value="isis.apache.org">
+                <input name="ref" type="hidden" value="">
+                <input name="ss" type="hidden" value="677j458329j2">
+            </form>
+          -->
+          
+            <FORM class="pull-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                <INPUT type="hidden" name="cof" value="FORID:0">
+                <INPUT name="q" type="text" placeholder="Search">
+            </FORM>
+
+          </div>
+       <!-- Google CSE Search Box Ends -->
+        
+        </div>
+      </div>
+    </div>
+
+    <div class="container">
+      <div class="markdown-content">
+      
+
+<div class="page-header">
+<p><a href="./../../../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../../../components/about.html">Components</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/about.html">Objectstores</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/jdo/about.html">Jdo</a></p>
+<h1>Mapping Blobs
+
+</h1>
+</div>
+
+<p>Isis configures JDO/DataNucleus so that the properties of type <code>org.apache.isis.applib.value.Blob</code> and <code>org.apache.isis.applib.value.Clob</code> can also be persisted.</p>
+
+<p>As for <a href="mapping-joda-dates.html">Joda dates</a>, this requires the <code>@javax.jdo.annotations.Persistent</code> annotation.  However, whereas for dates one would always expect this value to be retrieved eagerly, for blobs and clobs it is not so clear cut.</p>
+
+<p>For example, in the <code>ToDoItem</code> (in the <a href="../../../getting-started/quickstart-archetype.html">wicket/restful/jdo archetype</a>) the <code>attachment</code> property is as follows:</p>
+
+<pre>
+  @javax.jdo.annotations.Persistent(defaultFetchGroup="false")
+  private Blob attachment;
+
+  @Optional
+  @MemberOrder(name="Detail", sequence = "7")
+  @Hidden(where=Where.STANDALONE_TABLES)
+  public Blob getAttachment() {
+    return attachment;
+  }
+  public void setAttachment(final Blob attachment) {
+    this.attachment = attachment;
+  }
+</pre>
+
+<p>Here we can see that the property is hidden in standalone tables, and so there's no need to retrieve it eagerly.  The converse of this the object is rendered by itself, then the attachment property will be retrieved as a one separate query; this seems like a reasonable compromise.</p>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="display: none; ">
+            <div class="modal-header">
+                <a class="close" data-dismiss="modal">x</a>
+
+                <h3>Thank you for contributing to the documention!</h3>
+            </div>
+            <div class="modal-body">
+                <h4>Any help with the documentation is greatly appreciated.</h4>
+                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+                <!--[if gt IE 6]>
+                <h4>Internet Explorer Users</h4>
+                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+                <![endif]-->
+
+            </div>
+            <div class="modal-footer">
+                Do you have an Apache ID?
+                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+            </div>
+        </div>
+        <script src="./../../../javascript/bootstrap-modal.js"></script>
+
+      <footer>
+        <p>
+        Copyright &copy; 2012~2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        <br/>
+        Apache Isis, Isis, Apache, the Apache feather logo, and the Apache Isis project logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Added: websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-joda-dates.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-joda-dates.html (added)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-joda-dates.html Thu Aug 15 17:01:21 2013
@@ -0,0 +1,316 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>Joda Dates</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="./../../../bootstrap.css" rel="stylesheet">
+    <link href="./../../../prettify.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+        .markdown-content {
+            min-height: 500px;
+        }
+        .book-image img {
+          border: 1px;
+          border-style: solid;
+        }
+        .release-matrix .heading {
+            background-color: #eeeeee;
+        }
+        .release-matrix .new {
+            color: #dd0000;
+            font-weight: bolder;
+        }
+        .stub,.note {
+            position: relative;
+            padding: 7px 15px;
+            margin-bottom: 18px;
+            color: #404040;
+            background-color: #eedc94;
+            background-repeat: repeat-x;
+            background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+            background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+            background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+            background-image: linear-gradient(top, #fceec1, #eedc94);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+            border-color: #eedc94 #eedc94 #e4c652;
+            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+            text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+            border-width: 1px;
+            border-style: solid;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            border-radius: 4px;
+            -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+        }
+    </style>
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Joda Dates",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../../images/favicon.ico">
+    <!--
+    <link rel="apple-touch-icon" href="./../../../images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="./../../../images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="./../../../images/apple-touch-icon-114x114.png">
+    -->
+
+    <script src="./../../../javascript/prettify.js" type="text/javascript"></script>
+    <script src="./../../../javascript/jquery-latest.js"></script>
+
+
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <script src="./../../../javascript/common.js"></script>
+    <script src="./../../../javascript/prettyprint.js"></script>
+
+    <script src="./../../../javascript/bootstrap-alert.js"></script>
+    <script src="./../../../javascript/bootstrap-dropdown.js"></script>
+    <script src="./../../../javascript/bootstrap-tooltip.js"></script>
+    <!--
+    <script src="./../../../javascript/bootstrap-alerts.js"></script>
+    -->
+    <script src="./../../../javascript/bootstrap-modal.js"></script>
+    <script src="./../../../javascript/bootstrap-transition.js"></script>
+    <script src="./../../../javascript/bootstrap-button.js"></script>
+    <script src="./../../../javascript/bootstrap-popover.js"></script>
+    <script src="./../../../javascript/bootstrap-scrollspy.js"></script>
+    <script src="./../../../javascript/bootstrap-typeahead.js"></script>
+    <script src="./../../../javascript/bootstrap-carousel.js"></script>
+    <script src="./../../../javascript/bootstrap-tab.js"></script>
+    <script src="./../../../javascript/bootstrap-collapse.js"></script>
+
+    
+    
+    
+
+    <script>
+    $(function () { prettyPrint() })
+    $().dropdown()
+    </script>
+
+    <!-- GAQ stuff removed here -->
+
+
+  </head>
+
+  <body>
+
+    <div class="topbar">
+      <div class="fill">
+        <div class="container">
+          <a class="brand" href="./../../../index.html">Apache Isis&trade;</a>
+          <ul class="nav">
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li>
+                  <a href="http://www.apache.org/">Apache Homepage <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/licenses/">Licenses <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/security/">Security <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/thanks.html">Thanks <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="./../../../more-thanks.html">More thanks <i class="icon-share-alt"></i></a>
+                </li>
+              </ul>
+            </li>
+            <li><a href="./../../../index.html">Home</a></li>
+            <li><a href="./../../../download.html">Download</a></li>
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Screenshots<b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li><a href="./../../../getting-started/screenshots.html">Screenshots</a></li>
+                <li><a href="./../../../getting-started/screencasts.html">Screencasts</a></li>
+                <li><a href="./../../../getting-started/powered-by.html">Powered by</a></li>
+                <!--
+                <li><a href="#">Online Demo</a></li>
+                -->
+              </ul>
+            </li>
+            <li><a href="./../../../documentation.html">Documentation</a></li>
+            <li><a href="./../../../support.html">Support</a></li>
+
+          </ul>
+
+          <!-- Google CSE Search Box Begins -->
+          <div style="float: right; position: relative; ">
+
+          <!--
+              <form action="http://www.google.com/cse" id="cse-search-box" _lpchecked="1">
+                <div>
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                    <input type="hidden" name="ie" value="UTF-8">
+                    <input type="text" name="q" placeholder="Search" size="31" style="border: 1px solid rgb(126, 157, 185); padding: 2px; background-color: rgb(255, 255, 255); background-position: 0% 50%; background-repeat: no-repeat no-repeat;">
+                    <input type="submit" name="sa" value="Search">
+                </div>
+                <input name="siteurl" type="hidden" value="isis.apache.org">
+                <input name="ref" type="hidden" value="">
+                <input name="ss" type="hidden" value="677j458329j2">
+            </form>
+          -->
+          
+            <FORM class="pull-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                <INPUT type="hidden" name="cof" value="FORID:0">
+                <INPUT name="q" type="text" placeholder="Search">
+            </FORM>
+
+          </div>
+       <!-- Google CSE Search Box Ends -->
+        
+        </div>
+      </div>
+    </div>
+
+    <div class="container">
+      <div class="markdown-content">
+      
+
+<div class="page-header">
+<p><a href="./../../../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../../../components/about.html">Components</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/about.html">Objectstores</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/jdo/about.html">Jdo</a></p>
+<h1>Joda Dates
+
+</h1>
+</div>
+
+<p>Isis' JDO objectstore bundles DataNucleus' <a href="http://www.datanucleus.org/plugins/store.types.jodatime.html">built-in support</a> for Joda <code>LocalDate</code> and <code>LocalDateTime</code> datatypes, meaning that entity properties of these types will be persisted as appropriate data types in the database tables.</p>
+
+<p>It is, however, necessary to annotate your properties with <code>@javax.jdo.annotations.Persistent</code>, otherwise the data won't actually be persisted.  (See the <a href="http://db.apache.org/jdo/field_types.html">JDO docs</a> for more details on this).</p>
+
+<p>Moreover, these datatypes are <em>not</em> in the default fetch group, meaning that JDO/DataNucleus will perform an additional <code>SELECT</code> query for each attribute.  To avoid this extra query, the annotation should indicate that the property is in the default fetch group.</p>
+
+<p>For example, the <code>ToDoItem</code> (in the <a href="../../../getting-started/quickstart-archetype.html">wicket/restful/jdo archetype</a>) defines the <code>dueBy</code> property as follows:</p>
+
+<pre>
+  @javax.jdo.annotations.Persistent
+  private LocalDate dueBy;
+
+  @MemberOrder(name="Detail", sequence = "3")
+  @Optional
+  public LocalDate getDueBy() {
+    return dueBy;
+  }
+  public void setDueBy(final LocalDate dueBy) {
+    this.dueBy = dueBy;
+  }
+</pre>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="display: none; ">
+            <div class="modal-header">
+                <a class="close" data-dismiss="modal">x</a>
+
+                <h3>Thank you for contributing to the documention!</h3>
+            </div>
+            <div class="modal-body">
+                <h4>Any help with the documentation is greatly appreciated.</h4>
+                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+                <!--[if gt IE 6]>
+                <h4>Internet Explorer Users</h4>
+                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+                <![endif]-->
+
+            </div>
+            <div class="modal-footer">
+                Do you have an Apache ID?
+                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+            </div>
+        </div>
+        <script src="./../../../javascript/bootstrap-modal.js"></script>
+
+      <footer>
+        <p>
+        Copyright &copy; 2012~2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        <br/>
+        Apache Isis, Isis, Apache, the Apache feather logo, and the Apache Isis project logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Added: websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-mandatory-and-optional-properties.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-mandatory-and-optional-properties.html (added)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/mapping-mandatory-and-optional-properties.html Thu Aug 15 17:01:21 2013
@@ -0,0 +1,380 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>Mapping Optional Properties</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="./../../../bootstrap.css" rel="stylesheet">
+    <link href="./../../../prettify.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+        .markdown-content {
+            min-height: 500px;
+        }
+        .book-image img {
+          border: 1px;
+          border-style: solid;
+        }
+        .release-matrix .heading {
+            background-color: #eeeeee;
+        }
+        .release-matrix .new {
+            color: #dd0000;
+            font-weight: bolder;
+        }
+        .stub,.note {
+            position: relative;
+            padding: 7px 15px;
+            margin-bottom: 18px;
+            color: #404040;
+            background-color: #eedc94;
+            background-repeat: repeat-x;
+            background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+            background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+            background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+            background-image: linear-gradient(top, #fceec1, #eedc94);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+            border-color: #eedc94 #eedc94 #e4c652;
+            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+            text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+            border-width: 1px;
+            border-style: solid;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            border-radius: 4px;
+            -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+        }
+    </style>
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Mapping Optional Properties",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../../images/favicon.ico">
+    <!--
+    <link rel="apple-touch-icon" href="./../../../images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="./../../../images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="./../../../images/apple-touch-icon-114x114.png">
+    -->
+
+    <script src="./../../../javascript/prettify.js" type="text/javascript"></script>
+    <script src="./../../../javascript/jquery-latest.js"></script>
+
+
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <script src="./../../../javascript/common.js"></script>
+    <script src="./../../../javascript/prettyprint.js"></script>
+
+    <script src="./../../../javascript/bootstrap-alert.js"></script>
+    <script src="./../../../javascript/bootstrap-dropdown.js"></script>
+    <script src="./../../../javascript/bootstrap-tooltip.js"></script>
+    <!--
+    <script src="./../../../javascript/bootstrap-alerts.js"></script>
+    -->
+    <script src="./../../../javascript/bootstrap-modal.js"></script>
+    <script src="./../../../javascript/bootstrap-transition.js"></script>
+    <script src="./../../../javascript/bootstrap-button.js"></script>
+    <script src="./../../../javascript/bootstrap-popover.js"></script>
+    <script src="./../../../javascript/bootstrap-scrollspy.js"></script>
+    <script src="./../../../javascript/bootstrap-typeahead.js"></script>
+    <script src="./../../../javascript/bootstrap-carousel.js"></script>
+    <script src="./../../../javascript/bootstrap-tab.js"></script>
+    <script src="./../../../javascript/bootstrap-collapse.js"></script>
+
+    
+    
+    
+
+    <script>
+    $(function () { prettyPrint() })
+    $().dropdown()
+    </script>
+
+    <!-- GAQ stuff removed here -->
+
+
+  </head>
+
+  <body>
+
+    <div class="topbar">
+      <div class="fill">
+        <div class="container">
+          <a class="brand" href="./../../../index.html">Apache Isis&trade;</a>
+          <ul class="nav">
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li>
+                  <a href="http://www.apache.org/">Apache Homepage <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/licenses/">Licenses <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/security/">Security <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="http://www.apache.org/foundation/thanks.html">Thanks <i class="icon-share-alt"></i></a>
+                </li>
+                <li>
+                  <a href="./../../../more-thanks.html">More thanks <i class="icon-share-alt"></i></a>
+                </li>
+              </ul>
+            </li>
+            <li><a href="./../../../index.html">Home</a></li>
+            <li><a href="./../../../download.html">Download</a></li>
+            <li class="dropdown">
+              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Screenshots<b class="caret"></b></a>
+              <ul class="dropdown-menu">
+                <li><a href="./../../../getting-started/screenshots.html">Screenshots</a></li>
+                <li><a href="./../../../getting-started/screencasts.html">Screencasts</a></li>
+                <li><a href="./../../../getting-started/powered-by.html">Powered by</a></li>
+                <!--
+                <li><a href="#">Online Demo</a></li>
+                -->
+              </ul>
+            </li>
+            <li><a href="./../../../documentation.html">Documentation</a></li>
+            <li><a href="./../../../support.html">Support</a></li>
+
+          </ul>
+
+          <!-- Google CSE Search Box Begins -->
+          <div style="float: right; position: relative; ">
+
+          <!--
+              <form action="http://www.google.com/cse" id="cse-search-box" _lpchecked="1">
+                <div>
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                    <input type="hidden" name="ie" value="UTF-8">
+                    <input type="text" name="q" placeholder="Search" size="31" style="border: 1px solid rgb(126, 157, 185); padding: 2px; background-color: rgb(255, 255, 255); background-position: 0% 50%; background-repeat: no-repeat no-repeat;">
+                    <input type="submit" name="sa" value="Search">
+                </div>
+                <input name="siteurl" type="hidden" value="isis.apache.org">
+                <input name="ref" type="hidden" value="">
+                <input name="ss" type="hidden" value="677j458329j2">
+            </form>
+          -->
+          
+            <FORM class="pull-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+                    <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+                <INPUT type="hidden" name="cof" value="FORID:0">
+                <INPUT name="q" type="text" placeholder="Search">
+            </FORM>
+
+          </div>
+       <!-- Google CSE Search Box Ends -->
+        
+        </div>
+      </div>
+    </div>
+
+    <div class="container">
+      <div class="markdown-content">
+      
+
+<div class="page-header">
+<p><a href="./../../../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../../../components/about.html">Components</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/about.html">Objectstores</a>&nbsp;&raquo&nbsp;<a href="./../../../components/objectstores/jdo/about.html">Jdo</a></p>
+<h1>Mapping Optional Properties
+
+</h1>
+</div>
+
+<h3>Isis vs JDO Annotations</h3>
+
+<p>In the standard Isis programming model, optional properties are specified with the <code>@Optional</code> annotation.  However, this annotation is not recognized by the JDO Objectstore, optionality is specified using the <code>javax.jdo.annotations.Column(allowNulls="true")</code> annotation.</p>
+
+<p>Since these are different annotations, incompatibilities can arise.  A property might be annotated as optional to Isis, but mandatory to JDO; or vice versa.</p>
+
+<p>The two frameworks also have different defaults if their respective annotations are missing; this might also lead to incompatibilities.  For Isis, if the <code>@Optional</code> annotation is missing then the property is assumed to be mandatory.  For JDO, if the <code>@Column</code> annotation is missing then the property is assumed to mandatory if a primitive type, but optional if a reference type (eg <code>String</code>, <code>BigDecimal</code> etc).</p>
+
+<p>Isis will flag any incompatibilities between the two frameworks, and refuse to boot (fail fast).  To make such conflicts easier to avoid, though, Isis also understands the <code>@Column</code> annotation instead of the <code>@Optional</code> annotation.</p>
+
+<p>For example, rather than:</p>
+
+<pre><code>@javax.jdo.annotations.Column(allowNulls="true")
+private LocalDate date;
+
+@Optional
+public LocalDate getDate() { }
+public void setDate(LocalDate d) { } 
+</code></pre>
+
+<p>you can write:</p>
+
+<pre><code>private LocalDate date;
+
+@javax.jdo.annotations.Column(allowNulls="true")
+public LocalDate getDate() { }
+public void setDate(LocalDate d) { } 
+</code></pre>
+
+<p>Do note though that the <code>@Column</code> annotation must be applied to the getter method, not to the field.  </p>
+
+<h3>Handling Mandatory Properties in Subtypes</h3>
+
+<p>If you have a hierarchy of classes then you need to decide which inheritance strategy to use.  </p>
+
+<ul>
+<li>"table per hierarchy", or "rollup" (<code>InheritanceStrategy.SUPERCLASS_TABLE</code>)
+<ul>
+<li>whereby a single table corresponds to the superclass, and also holds the properties of the subtype (or subtypes) being rolled up</li>
+</ul></li>
+<li>"table per class" (<code>InheritanceStrategy.NEW_TABLE</code>)
+<ul>
+<li>whereby is a table for both superclass and subclass, in 1:1 correspondence</li>
+</ul></li>
+<li>"rolldown" (<code>InheritanceStrategy.SUBCLASS_TABLE</code>)
+<ul>
+<li>whereby a single table holds the properties of the subtype, and also holds the properties of its supertype </li>
+</ul></li>
+</ul>
+
+<p>In the first "rollup" case, we can have a situation where - logically speaking - the property is mandatory in the subtype - but it must be mapped as nullable in the database because it is n/a for any other subtypes that are rolled up.</p>
+
+<p>In this situation we must tell JDO that the column is optional, but to Isis we want to enforce it being mandatory.  This can be done using the <code>@Mandatory</code> annotation.</p>
+
+<p>For example:</p>
+
+<pre><code>@javax.jdo.annotations.Inheritance(strategy = InheritanceStrategy.SUPER_TABLE)   
+public class SomeSubtype extends SomeSuperType {
+
+    private LocalDate date;
+
+    @javax.jdo.annotations.Column(allowNulls="true")
+    @Mandatory
+    public LocalDate getDate() { }
+    public void setDate(LocalDate d) { }
+
+} 
+</code></pre>
+
+<p>An alternative way to achieve this is to leave the JDO annotation on the field (where it is invisible to Isis), and rely on Isis' default, eg:</p>
+
+<pre><code>@javax.jdo.annotations.Inheritance(strategy = InheritanceStrategy.SUPER_TABLE)   
+public class SomeSubtype extends SomeSuperType {
+
+    @javax.jdo.annotations.Column(allowNulls="true")
+    private LocalDate date;
+
+    // mandatory in Isis by default
+    public LocalDate getDate() { }
+    public void setDate(LocalDate d) { }
+
+} 
+</code></pre>
+
+<p>We recommend the former mapping, though, using <code>@Mandatory</code>.</p>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="display: none; ">
+            <div class="modal-header">
+                <a class="close" data-dismiss="modal">x</a>
+
+                <h3>Thank you for contributing to the documention!</h3>
+            </div>
+            <div class="modal-body">
+                <h4>Any help with the documentation is greatly appreciated.</h4>
+                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+                <!--[if gt IE 6]>
+                <h4>Internet Explorer Users</h4>
+                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+                <![endif]-->
+
+            </div>
+            <div class="modal-footer">
+                Do you have an Apache ID?
+                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+            </div>
+        </div>
+        <script src="./../../../javascript/bootstrap-modal.js"></script>
+
+      <footer>
+        <p>
+        Copyright &copy; 2012~2013 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        <br/>
+        Apache Isis, Isis, Apache, the Apache feather logo, and the Apache Isis project logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Modified: websites/staging/isis/trunk/content/documentation.html
==============================================================================
--- websites/staging/isis/trunk/content/documentation.html (original)
+++ websites/staging/isis/trunk/content/documentation.html Thu Aug 15 17:01:21 2013
@@ -440,7 +440,7 @@
 <h2>Object Stores</h2>
 
 <p><div class="row-even">
-<div class="span-one-third"></p>
+<div class="span-one-thirds"></p>
 
 <h3>DataNucleus (JDO) <a href="components/objectstores/jdo/release-notes/about.html">1.1.0</a></h3>
 
@@ -449,17 +449,27 @@
 <li><a href="components/objectstores/jdo/datanucleus-and-eclipse.html">DataNucleus and Eclipse</a></li>
 <li><a href="components/objectstores/jdo/datanucleus-and-maven.html">DataNucleus and Maven</a></li>
 <li><a href="components/objectstores/jdo/persistence_xml.html"><code>persistence.xml</code> file</a></li>
-<li><a href="components/objectstores/jdo/dates-blobs-lazy-loading.html">Dates, Blobs and Lazy Loading</a></li>
-<li><a href="components/objectstores/jdo/managed-1-to-m-relationships.html">Managed 1:m bidirectional relationships</a></li>
 <li><a href="components/objectstores/jdo/using-jndi-datasource.html">Using a JNDI Datasource</a></li>
 <li><a href="components/objectstores/jdo/isisjdosupport-service.html">Using the <code>IsisJdoSupport</code> service</a></li>
 <li><a href="components/objectstores/jdo/enabling-logging.html">Enabling Logging</a></li>
-<li><a href="components/objectstores/jdo/deploying-on-the-google-app-engine.html">Deploying on the Google App Engine</a>
-</div>
-<div class="span-one-third">
-<h3>DataNucleus (ctd)</h3></li>
+<li><a href="components/objectstores/jdo/deploying-on-the-google-app-engine.html">Deploying on the Google App Engine</a></li>
+</ul>
+
+<h5>JDO Mapping Hints</h5>
+
+<ul>
+<li><a href="components/objectstores/jdo/mapping-mandatory-and-optional-properties.html">Mapping Mandatory and Optional Properties</a></li>
+<li><a href="components/objectstores/jdo/mapping-joda-dates.html">Mapping JODA Dates</a></li>
+<li><a href="components/objectstores/jdo/mapping-blobs.html">Mapping Blobs</a></li>
+<li><a href="components/objectstores/jdo/lazy-loading.html">Lazy Loading</a></li>
+<li><a href="components/objectstores/jdo/managed-1-to-m-relationships.html">Managed 1:m bidirectional relationships</a></li>
 </ul>
 
+<p></div>
+<div class="span-one-third"></p>
+
+<h3>DataNucleus (ctd)</h3>
+
 <h5>Applib Service Implementations</h5>
 
 <ul>