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 2014/02/07 15:54:42 UTC

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

Author: buildbot
Date: Fri Feb  7 14:54:42 2014
New Revision: 896745

Log:
Staging update by buildbot for isis

Added:
    websites/staging/isis/trunk/content/components/objectstores/jdo/background-command-service-jdo.html
    websites/staging/isis/trunk/content/components/objectstores/jdo/command-service-jdo.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/components/objectstores/jdo/auditing-service-jdo.html
    websites/staging/isis/trunk/content/core/services/auditing-service.html
    websites/staging/isis/trunk/content/core/services/background-service.html
    websites/staging/isis/trunk/content/core/services/bulk-interaction.html
    websites/staging/isis/trunk/content/core/services/xmlsnapshot-service.html
    websites/staging/isis/trunk/content/documentation.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Feb  7 14:54:42 2014
@@ -1 +1 @@
-1565161
+1565668

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Fri Feb  7 14:54:42 2014
@@ -1 +1 @@
-1565161
+1565668

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 Fri Feb  7 14:54:42 2014
@@ -307,10 +307,12 @@
 
 <ul>
 <li><a href="eagerly-registering-entities.html">Eagerly Registering Entities</a></li>
-<li><a href="publishing-service-jdo.html">Publishing Service on JDO</a></li>
-<li><a href="auditing-service-jdo.html">Auditing Service on JDO</a></li>
 <li><a href="exception-recognizers-jdo.html">Exception Recognizers</a></li>
 <li><a href="settings-services-jdo.html">Settings Services</a></li>
+<li><a href="command-service-jdo.html">Command Service on JDO</a> [1.4.0-snapshot, stub]</li>
+<li><a href="command-service-jdo.html">Background Command Service on JDO</a> [1.4.0-snapshot, stub]</li>
+<li><a href="publishing-service-jdo.html">Publishing Service on JDO</a></li>
+<li><a href="auditing-service-jdo.html">Auditing Service on JDO</a></li>
 </ul>
 
 <h3>Releases</h3>

Modified: websites/staging/isis/trunk/content/components/objectstores/jdo/auditing-service-jdo.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/auditing-service-jdo.html (original)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/auditing-service-jdo.html Fri Feb  7 14:54:42 2014
@@ -288,7 +288,7 @@
 <p>Register like any other service in <code>isis.properties</code>:</p>
 
 <pre>
-isis.services=<i>...other services...</i>,\
+isis.services=...,\
               org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdo,\
               ...
 </pre>

Added: websites/staging/isis/trunk/content/components/objectstores/jdo/background-command-service-jdo.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/background-command-service-jdo.html (added)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/background-command-service-jdo.html Fri Feb  7 14:54:42 2014
@@ -0,0 +1,326 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>BackgroundCommandServiceJdo</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-3.0.0/css/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);
+        }
+        
+        div.XXXisis-tweak form {
+            margin-top: 6px;
+            margin-bottom: -2px;
+        }
+        
+        div.row div.col-md-12 {
+          border-top: 1px solid #eeeeee;
+        }
+        
+        
+        /* Isis specific stuff */
+
+        .container {
+          width: 940px;
+        }
+
+        .markdown-content .documentation .span-one-third p {
+          margin-bottom: 0px;
+        }
+
+        .markdown-content .documentation .group {
+          margin-top: 9px;
+        }
+
+        .documentation .group h2 {
+          border-bottom: 1px solid #DDD
+        }
+        .documentation h2 a, .documentation h3 a {
+          /* same as code style */
+          padding: 0 3px 2px;
+          font-family: Monaco, Andale Mono, Courier New, monospace;
+          font-size: 12px;
+          -webkit-border-radius: 3px;
+          -moz-border-radius: 3px;
+          border-radius: 3px;
+          padding: 1px 3px;
+        }
+        
+        .carousel-indicators li {
+          border: 1px solid rgb(192,70,1);
+        }
+
+        .carousel-indicators li.active {
+          background-color: rgb(192,70,1);
+        }
+        
+        .carousel-control .icon-prev,
+        .carousel-control .icon-next {
+          color: rgb(192,70,1);
+          font-size: 60px;
+        }
+        
+        .page-header {
+          margin-top: 0px;
+        }
+        
+    </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=BackgroundCommandServiceJdo",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../../images/favicon.ico">
+
+    <script src="./../../../javascript/prettify.js" type="text/javascript"></script>
+    
+    <script src="//code.jquery.com/jquery.js"></script>
+    <script src="./../../../javascript/prettyprint.js"></script>
+    <script src="./../../../bootstrap-3.0.0/js/bootstrap.js"></script>
+
+
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <!--
+    <DISABLEDscript src="./../../../javascript/common.js"></DISABLEDscript>
+    -->
+
+    
+    
+    
+
+    <script>
+    $(function () { prettyPrint() })
+    $().dropdown()
+    </script>
+
+  </head>
+
+  <body>
+
+    <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
+      <div class="container">
+        <a class="navbar-brand" href="./../../../index.html">Apache Isis&trade;</a>
+        <ul class="nav navbar-nav">
+          <li><a href="./../../../download.html">Download</a></li>
+          <li><a href="./../../../documentation.html">Documentation</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="http://isisdemo.mmyco.co.uk/">Online Demo</a></li>
+            </ul>
+          </li>
+
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Support<b class="caret"></b></a>
+            <ul class="dropdown-menu">
+              <li><a href="./../../../support.html">Mailing Lists</a></li>
+              <li><a href="http://isis.markmail.org/search/?q=">ML Archives</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/ISIS">JIRA</a></li>
+              <li><a href="http://stackoverflow.com/questions/tagged/isis">Stack Overflow</a></li>
+              <li><a href="http://github.com/apache/isis">Github mirror</a></li>
+            </ul>
+          </li>
+
+          <FORM class="navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+            <div class="form-group">
+              <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+              <INPUT type="hidden" name="cof" value="FORID:0">
+              <INPUT class="form-control" name="q" type="text" placeholder="Search">
+            </div>
+          </FORM>
+          
+          <li class="dropdown  navbar-right">
+            <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>
+        </ul>
+
+      </div>
+    </nav>
+
+    <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>BackgroundCommandServiceJdo
+
+</h1>
+</div>
+
+<blockquote>
+  <p>this is a stub</p>
+</blockquote>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="xxxdisplay: 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>
+        <hr/>
+        <p>
+        Copyright &copy; 2010~2014 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/command-service-jdo.html
==============================================================================
--- websites/staging/isis/trunk/content/components/objectstores/jdo/command-service-jdo.html (added)
+++ websites/staging/isis/trunk/content/components/objectstores/jdo/command-service-jdo.html Fri Feb  7 14:54:42 2014
@@ -0,0 +1,326 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>BackgroundCommandServiceJdo</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-3.0.0/css/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);
+        }
+        
+        div.XXXisis-tweak form {
+            margin-top: 6px;
+            margin-bottom: -2px;
+        }
+        
+        div.row div.col-md-12 {
+          border-top: 1px solid #eeeeee;
+        }
+        
+        
+        /* Isis specific stuff */
+
+        .container {
+          width: 940px;
+        }
+
+        .markdown-content .documentation .span-one-third p {
+          margin-bottom: 0px;
+        }
+
+        .markdown-content .documentation .group {
+          margin-top: 9px;
+        }
+
+        .documentation .group h2 {
+          border-bottom: 1px solid #DDD
+        }
+        .documentation h2 a, .documentation h3 a {
+          /* same as code style */
+          padding: 0 3px 2px;
+          font-family: Monaco, Andale Mono, Courier New, monospace;
+          font-size: 12px;
+          -webkit-border-radius: 3px;
+          -moz-border-radius: 3px;
+          border-radius: 3px;
+          padding: 1px 3px;
+        }
+        
+        .carousel-indicators li {
+          border: 1px solid rgb(192,70,1);
+        }
+
+        .carousel-indicators li.active {
+          background-color: rgb(192,70,1);
+        }
+        
+        .carousel-control .icon-prev,
+        .carousel-control .icon-next {
+          color: rgb(192,70,1);
+          font-size: 60px;
+        }
+        
+        .page-header {
+          margin-top: 0px;
+        }
+        
+    </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=BackgroundCommandServiceJdo",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../../images/favicon.ico">
+
+    <script src="./../../../javascript/prettify.js" type="text/javascript"></script>
+    
+    <script src="//code.jquery.com/jquery.js"></script>
+    <script src="./../../../javascript/prettyprint.js"></script>
+    <script src="./../../../bootstrap-3.0.0/js/bootstrap.js"></script>
+
+
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <!--
+    <DISABLEDscript src="./../../../javascript/common.js"></DISABLEDscript>
+    -->
+
+    
+    
+    
+
+    <script>
+    $(function () { prettyPrint() })
+    $().dropdown()
+    </script>
+
+  </head>
+
+  <body>
+
+    <nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
+      <div class="container">
+        <a class="navbar-brand" href="./../../../index.html">Apache Isis&trade;</a>
+        <ul class="nav navbar-nav">
+          <li><a href="./../../../download.html">Download</a></li>
+          <li><a href="./../../../documentation.html">Documentation</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="http://isisdemo.mmyco.co.uk/">Online Demo</a></li>
+            </ul>
+          </li>
+
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Support<b class="caret"></b></a>
+            <ul class="dropdown-menu">
+              <li><a href="./../../../support.html">Mailing Lists</a></li>
+              <li><a href="http://isis.markmail.org/search/?q=">ML Archives</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/ISIS">JIRA</a></li>
+              <li><a href="http://stackoverflow.com/questions/tagged/isis">Stack Overflow</a></li>
+              <li><a href="http://github.com/apache/isis">Github mirror</a></li>
+            </ul>
+          </li>
+
+          <FORM class="navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+            <div class="form-group">
+              <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+              <INPUT type="hidden" name="cof" value="FORID:0">
+              <INPUT class="form-control" name="q" type="text" placeholder="Search">
+            </div>
+          </FORM>
+          
+          <li class="dropdown  navbar-right">
+            <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>
+        </ul>
+
+      </div>
+    </nav>
+
+    <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>BackgroundCommandServiceJdo
+
+</h1>
+</div>
+
+<blockquote>
+  <p>this is a stub</p>
+</blockquote>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="xxxdisplay: 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>
+        <hr/>
+        <p>
+        Copyright &copy; 2010~2014 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/core/services/auditing-service.html
==============================================================================
--- websites/staging/isis/trunk/content/core/services/auditing-service.html (original)
+++ websites/staging/isis/trunk/content/core/services/auditing-service.html Fri Feb  7 14:54:42 2014
@@ -330,10 +330,10 @@
 
 <h3>Register the Service</h3>
 
-<p>Register like any other service in <code>isis.properties</code>:</p>
+<p>Register like any other service in <code>isis.properties</code>.  For example, if using the <a href="../../components/objectstores/jdo/auditing-service.html">JDO auditing implementation</a> then it would be:</p>
 
 <pre><code>isis.services=...,\
-              com.mycompany.myapp.isis.SomeAuditingService,\
+              org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdo,\
               ...
 </code></pre>
 

Modified: websites/staging/isis/trunk/content/core/services/background-service.html
==============================================================================
--- websites/staging/isis/trunk/content/core/services/background-service.html (original)
+++ websites/staging/isis/trunk/content/core/services/background-service.html Fri Feb  7 14:54:42 2014
@@ -277,19 +277,311 @@
 </h1>
 </div>
 
-<blockquote>
-  <p>this is a stub, for <code>BackgroundService</code> and <code>BackgroundCommandService</code></p>
-</blockquote>
+<p>The <code>BackgroundService</code>, and its companion <code>BackgroundCommandService</code>, enable action invocations to be persisted such that they may be invoked in the background.</p>
+
+<p>The <code>BackgroundService</code> is responsible for capturing a memento representing the action invocation, and persisting it.  The default <code>BackgroundServiceDefault</code> implementation (provided by isis-core) uses (a private copy of) <a href="./memento-service.html">MementoService</a>, and then delegates the persistence of the memento to the companion <code>BackgroundCommandService</code> (discussed further <a href="#BackgroundCommandService">below</a>).</p>
+
+<p>The JDO objectstore provides an implementation of <code>BackgroundCommandService</code> (<a href="../../components/objectstores/jdo/background-command-service-jdo.html">BackgroundCommandServiceJdo</a>) that persists to an RBMS entities.  You are welcome to write other implementations to other data stores (eg NoSQL) if required.</p>
+
+<p>The persisting of commands is only half the story; there needs to be a separate process  to read the commands and execute them.  The <code>BackgroundCommandExecution</code> class (also discussed <a href="#BackgroundCommandExecution">below</a> provides the mechanism to do this.</p>
+
+<h2>BackgroundService</h2>
+
+<p>The <code>BackgroundService</code> is the entry point for domain classes wishing to perform actions asynchronously.  This can be done in a typesafe way; the (default implementation of) <code>BackgroundService</code> actually uses a proxy wrapper around the target so that it can capture the action to invoke and its arguments, and then persist them rather than execute them.</p>
+
+<h3>API &amp; Implementation</h3>
+
+<p>Returns a proxy around the object which is then used to obtain the signature of the action to be invoked in the background.</p>
+
+<pre><code>public interface BackgroundService {
+
+    @Programmatic
+    &lt;T&gt; T execute(final T object);
+}
+</code></pre>
+
+<p>The default implementation is provided by core:</p>
+
+<ul>
+<li><code>org.apache.isis.core.runtime.services.background.BackgroundServiceDefault</code></li>
+</ul>
+
+<h3>Usage</h3>
+
+<p>Using the <code>BackgroundService</code> is very straight-forward.  For example:</p>
+
+<pre><code>public void submitCustomerInvoices() {
+    for(Customer customer: customerRepository.findCustomersToInvoice()) {
+        backgroundService.execute(customer).submitInvoice();
+    }
+    container.informUser("Calculating...");
+}
+</code></pre>
+
+<p>Will create a bunch of background commands executing the <code>submitInvoice()</code> method for each of the customers returned from the customer repository.</p>
+
+<p>For the end-user, executing an action that delegates work off to the <code>BackgroundService</code> raises the problem of how does the user know the work is complete?</p>
+
+<p>One option is for the background jobs to take responsibility to notify the user themselves.  In the above example, this would be the <code>submitInvoice()</code> method called upon each customer.  One could imagine more complex designs where only the final command executed notifies the user.</p>
+
+<p>However, an alternative is to rely on the fact that the <code>BackgroundService</code> will automatically hint that the <code>Command</code> representing the original interaction (to <code>submitCustomerInvoices()</code> in the example above) should be persisted.  This will be available if the related <code>CommandContext</code> and <code>CommandService</code> domain services are configured, and the <code>CommandService</code> supports persistent commands.  You can read more about <code>CommandContext</code> and <code>CommandService</code> <a href="./command-context.html">here</a>.</p>
+
+<p>Thus, the original action can run a query to obtain it corresponding <code>Command</code>, and return this to the user.  The child <code>Command</code>s created by the <code>BackgroundService</code> will then be associated with it.</p>
+
+<p>We could therefore refactor the method as follows:</p>
+
+<pre><code>public Command submitCustomerInvoices() {
+    for(Customer customer: customerRepository.findCustomersToInvoice()) {
+        backgroundService.execute(customer).submitInvoice();
+    }
+    return commandContext.getCommand();
+}
+</code></pre>
+
+<p>where <code>commandContext</code> field is the injected <code>CommandContext</code> domain service.</p>
+
+<h2>BackgroundCommandService</h2>
+
+<p>The <code>BackgroundCommandService</code> is a companion to the default <code>BackgroundServiceDefault</code> implementation, and takes responsibility for persisting the required action as a background command.</p>
+
+<p>Typically this service isn't called from domain classes, but it exists as a domain service so that it is pluggable.</p>
 
 <h3>API</h3>
 
+<p>The API of the <code>BackgroundCommandService</code> is:</p>
+
+<pre><code>public interface BackgroundCommandService {
+
+    public void schedule(
+            final ActionInvocationMemento aim, 
+            final Command command, 
+            final String targetClassName, final String targetActionName, final String targetArgs);
+
+}
+</code></pre>
+
+<p>where <code>ActionInvocationMemento</code> is a wrapper around a <a href="./memento-service.html">MementoService</a>'s <code>Memento</code>, capturing the details of an action invocation (for execution later on).</p>
+
+<p>For the record, the API of <code>ActionInvocationMemento</code> is:</p>
+
+<pre><code>public class ActionInvocationMemento {
+
+    public String getActionId() { ... }
+    public String getTargetClassName() { ... }
+    public String getTargetActionName() { ... }
+    public Bookmark getTarget() { ... }
+    public int getNumArgs() { ... }
+    public Class&lt;?&gt; getArgType(final int num) throws ClassNotFoundException { ... }
+    public &lt;T&gt; T getArg(final int num, final Class&lt;T&gt; type) { ... }
+
+    public String asMementoString() { ... }
+}
+</code></pre>
+
+<p>The <code>asMementoString()</code> method tehrefore lets the <code>BackgroundCommandService</code> implementation convert the action invocation into a simple string.</p>
+
 <h3>Implementation</h3>
 
+<p>The JDO object store provides the <a href="../../components/objectstores/jdo/background-command-service-jdo.html">BackgroundCommandServiceJdo</a> implementation that persists <code>Command</code>s to an RDBMS.</p>
+
 <h3>Usage</h3>
 
-<h3>Registering the Services</h3>
+<p>As noted above, this service isn't intended to be called from domain classes; rather it acts as a plug-in point to the default <code>BackgroundServiceDefault</code> service.</p>
+
+<h2>Related Services</h2>
+
+<p>These services are closely related to the <code>CommandContext</code> and <code>CommandService</code> services (both described [here]](./command-context.html)  services.  The <code>CommandContext</code> service is responsible for providing a parent <code>Command</code> with which the background <code>Command</code>s can then be associated as children, while the <code>CommandService</code> is responsible for persisting those parent <code>Command</code>s (analogous to the way in which the  <code>BackgroundCommandService</code> persists the child background <code>Command</code>s).</p>
+
+<p>The core framework provides default implementations of <code>CommandContext</code> and also <code>BackgroundService</code>, and there is very little reason to use any other implementation.</p>
+
+<p>The implementations of <code>CommandService</code> and <code>BackgroundCommandService</code> also go together; typically both parent <code>Command</code>s and child background <code>Command</code>s will be persisted in the same way.  The JDO objectstore provides implementations of both (<a href="../../components/objectstores/jdo/command-service-jdo.html">CommandServiceJdo</a> and <a href="../../components/objectstores/jdo/background-command-service-jdo.html">BackgroundCommandServiceJdo</a>).</p>
+
+<h2>BackgroundCommandExecution</h2>
+
+<p>The <code>BackgroundCommandExecution</code> (in isis-core) is an abstract template class provided by isis-core that defines an abstract hook method to obtain background <code>Command</code>s to be executed:</p>
+
+<pre><code>public abstract class BackgroundCommandExecution 
+                         extends AbstractIsisSessionTemplate {
+    ...
+    protected abstract List&lt;? extends Command&gt; findBackgroundCommandsToExecute();
+    ...
+}
+</code></pre>
+
+<p>The developer is required to implement this hook method in a subclass.</p>
+
+<p>If using the JDO implementation of <code>BackgroundCommandService</code>, then this subclass exists already, namely:</p>
+
+<ul>
+<li><code>org.apache.isis.objectstore.jdo.service.BackgroundCommandExecutionFromBackgroundCommandServiceJdo</code></li>
+</ul>
+
+<p>This returns all background <code>Command</code>s that are not yet started.</p>
+
+<h2>Quartz Scheduler Configuration</h2>
+
+<p>The last part of the puzzle is to actually run this class.  These could be run in a batch job overnight, or run continually by, say, the <a href="http://quartz-scheduler.org">Quartz</a> scheduler.  For the latter case, we want to define a Quartz cron job that will inherit the <code>execute(...)</code> method of <code>BackgroundCommandExecution</code> (inherited from <em>its</em> superclass, <code>AbstractIsisSessionTemplate</code>).</p>
+
+<p>The following does the trick:</p>
+
+<pre><code>import org.apache.isis.objectstore.jdo.service.BackgroundCommandExecutionFromBackgroundCommandServiceJdo;
+
+public class BackgroundCommandExecutionQuartzJob extends AbstractIsisQuartzJob {
+
+    public BackgroundCommandExecutionQuartzJob() {
+        super(new BackgroundCommandExecutionFromBackgroundCommandServiceJdo());   
+    }
+}
+</code></pre>
+
+<p>where <code>AbstractIsisQuartzJob</code> is the following boilerplate:</p>
+
+<pre><code>import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+...
+public class AbstractIsisQuartzJob implements Job {
+
+    public static enum ConcurrentInstancesPolicy {
+        SINGLE_INSTANCE_ONLY,
+        MULTIPLE_INSTANCES
+    }
+
+    private final AbstractIsisSessionTemplate isisRunnable;
+
+    private final ConcurrentInstancesPolicy concurrentInstancesPolicy;
+    private boolean executing;
+
+    public AbstractIsisQuartzJob(AbstractIsisSessionTemplate isisRunnable) {
+        this(isisRunnable, ConcurrentInstancesPolicy.SINGLE_INSTANCE_ONLY);
+    }
+    public AbstractIsisQuartzJob(AbstractIsisSessionTemplate isisRunnable, ConcurrentInstancesPolicy concurrentInstancesPolicy) {
+        this.isisRunnable = isisRunnable;
+        this.concurrentInstancesPolicy = concurrentInstancesPolicy;
+    }
+
+    // //////////////////////////////////////
+
+    public void execute(final JobExecutionContext context) 
+            throws JobExecutionException {
+        final AuthenticationSession authSession = newAuthSession(context);
+        try {
+            if(concurrentInstancesPolicy == ConcurrentInstancesPolicy.SINGLE_INSTANCE_ONLY &amp;&amp; executing) {
+                return;
+            }
+            executing = true;
+
+            isisRunnable.execute(authSession, context);
+        } finally {
+            executing = false;
+        }
+    }
+
+    AuthenticationSession newAuthSession(JobExecutionContext context) {
+        String user = getKey(context, SchedulerConstants.USER_KEY);
+        String rolesStr = getKey(context, SchedulerConstants.ROLES_KEY);
+        String[] roles = Iterables.toArray(
+                Splitter.on(",").split(rolesStr), String.class);
+        return new SimpleSession(user, roles);
+    }
+
+    String getKey(JobExecutionContext context, String key) {
+        return context.getMergedJobDataMap().getString(key);
+    }
+}
+</code></pre>
+
+<p>This can be configured to run using Quartz' <code>quartz-config.xml</code> file:</p>
+
+<pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;job-scheduling-data
+    xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData 
+http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
+    version="1.8"&gt;
+
+    &lt;schedule&gt;
+        &lt;job&gt;
+            &lt;name&gt;BackgroundCommandExecutionJob&lt;/name&gt;
+            &lt;group&gt;Isis&lt;/group&gt;
+            &lt;description&gt;Poll and execute any background actions persisted by the BackgroundActionServiceJdo domain service&lt;/description&gt;
+            &lt;job-class&gt;webapp.scheduler.BackgroundCommandExecutionQuartzJob&lt;/job-class&gt;
+            &lt;job-data-map&gt;
+                &lt;entry&gt;
+                    &lt;key&gt;webapp.scheduler.user&lt;/key&gt;
+                    &lt;value&gt;scheduler_user&lt;/value&gt;
+                &lt;/entry&gt;
+                &lt;entry&gt;
+                    &lt;key&gt;webapp.scheduler.roles&lt;/key&gt;
+                    &lt;value&gt;admin_role&lt;/value&gt;
+                &lt;/entry&gt;
+            &lt;/job-data-map&gt;
+        &lt;/job&gt;
+
+        &lt;trigger&gt;
+            &lt;cron&gt;
+                &lt;name&gt;BackgroundCommandExecutionJobEveryTenSeconds&lt;/name&gt;
+                &lt;job-name&gt;BackgroundCommandExecutionJob&lt;/job-name&gt;
+                &lt;job-group&gt;Isis&lt;/job-group&gt;
+                &lt;cron-expression&gt;0/10 * * * * ?&lt;/cron-expression&gt;
+            &lt;/cron&gt;
+        &lt;/trigger&gt;
+    &lt;/schedule&gt;
+&lt;/job-scheduling-data&gt;
+</code></pre>
+
+<p>The remaining two pieces of configuration are the <code>quartz.properties</code> file:</p>
+
+<pre><code>org.quartz.scheduler.instanceName = SchedulerQuartzConfigXml
+org.quartz.threadPool.threadCount = 1
+org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
+org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin 
+org.quartz.plugin.jobInitializer.fileNames = webapp/scheduler/quartz-config.xml 
+org.quartz.plugin.jobInitializer.failOnFileNotFound = true
+</code></pre>
+
+<p>and the entry in <code>web.xml</code> for the Quartz servlet:</p>
+
+<pre><code>&lt;servlet&gt;
+     &lt;servlet-name&gt;QuartzInitializer&lt;/servlet-name&gt;
+     &lt;servlet-class&gt;org.quartz.ee.servlet.QuartzInitializerServlet&lt;/servlet-class&gt;
+     &lt;init-param&gt;
+         &lt;param-name&gt;config-file&lt;/param-name&gt;
+         &lt;param-value&gt;webapp/scheduler/quartz.properties&lt;/param-value&gt;
+     &lt;/init-param&gt;
+     &lt;init-param&gt;
+         &lt;param-name&gt;shutdown-on-unload&lt;/param-name&gt;
+         &lt;param-value&gt;true&lt;/param-value&gt;
+     &lt;/init-param&gt;
+     &lt;init-param&gt;
+         &lt;param-name&gt;start-scheduler-on-load&lt;/param-name&gt;
+         &lt;param-value&gt;true&lt;/param-value&gt;
+     &lt;/init-param&gt;
+     &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+ &lt;/servlet&gt;
+</code></pre>
+
+<p>All of this stuff is configured in the example todo app, found on github:
+* <a href="">BackgroundCommandExecutionQuartzJob</a>
+* <a href="">AbstractIsisQuartzJob</a>
+* <a href="">quartz-config.xml</a>
+* <a href="">quartz.properties</a>
+* <a href="">web.xml</a></p>
+
+<h2>Registering the Services</h2>
+
+<p>Register like any other service in <code>isis.properties</code>.  For example, if using the default implementation of <code>BackgroundService</code> and the JDO implementation of <code>BackgroundCommandService</code>, it would be:</p>
+
+<pre><code>isis.services=...,\
+              org.apache.isis.core.runtime.services.background.BackgroundServiceDefault,\
+              org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdo,\
+              org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoRepository,\
+              org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions,\
+              ...
+</code></pre>
 
-<h3>Related Services</h3>
+<p>Note that the JDO implementation provides additional supporting <code>...Repository</code> and <code>...Contributions</code> services to query for and render background <code>Command</code>s.</p>
 
 
 

Modified: websites/staging/isis/trunk/content/core/services/bulk-interaction.html
==============================================================================
--- websites/staging/isis/trunk/content/core/services/bulk-interaction.html (original)
+++ websites/staging/isis/trunk/content/core/services/bulk-interaction.html Fri Feb  7 14:54:42 2014
@@ -283,6 +283,44 @@
 
 <h3>API</h3>
 
+<pre><code>@RequestScoped
+public static class InteractionContext {
+
+    public static enum InvokedAs { BULK, REGULAR }
+
+    public InvokedAs getInvokedAs() { ... }
+
+    public List&lt;Object&gt; getDomainObjects() { ... }
+    public int getSize() { ... }
+    public int getIndex() { ... }
+    public boolean isFirst() { ... }
+    public boolean isLast() { ... }
+
+}
+
+
+
+    /**
+     * Whether this particular {@link InteractionContext} was applied as a {@link InvokedAs#BULK bulk} action 
+     * (against each domain object in a list of domain objects) or as a {@link InvokedAs#REGULAR regular} 
+     * action (against a single domain object).
+     */
+    @Programmatic
+
+
+    /**
+     * The list of domain objects which are being acted upon.
+     */
+
+
+    /**
+     * The 0-based index to the object being acted upon.
+     * 
+     * &lt;p&gt;
+     * Will be a value in range [0, {@link #getSize() size}).
+     */
+</code></pre>
+
 <h3>Usage</h3>
 
 <h3>Implementation</h3>
@@ -291,6 +329,36 @@
 
 <h3>Related Services</h3>
 
+<h3>Unit testing support</h3>
+
+<pre><code>@RequestScoped
+public static class InteractionContext {
+
+
+    /**
+     * Intended only to support unit testing.
+     */
+    public static InteractionContext regularAction(Object domainObject) {
+        return new InteractionContext(InvokedAs.REGULAR, Collections.singletonList(domainObject));
+    }
+
+    /**
+     * Intended only to support unit testing.
+     */
+    public static InteractionContext bulkAction(Object... domainObjects) {
+        return bulkAction(Arrays.asList(domainObjects));
+    }
+
+    /**
+     * Intended only to support unit testing.
+     */
+    public static InteractionContext bulkAction(List&lt;Object&gt; domainObjects) {
+        return new InteractionContext(InvokedAs.BULK, domainObjects);
+    }
+
+}
+</code></pre>
+
 
 
       </div>

Modified: websites/staging/isis/trunk/content/core/services/xmlsnapshot-service.html
==============================================================================
--- websites/staging/isis/trunk/content/core/services/xmlsnapshot-service.html (original)
+++ websites/staging/isis/trunk/content/core/services/xmlsnapshot-service.html Fri Feb  7 14:54:42 2014
@@ -283,6 +283,48 @@
 
 <h3>API</h3>
 
+<pre><code>public interface XmlSnapshotService {
+
+    public interface Snapshot {
+        public Document getXmlDocument();
+        public Document getXsdDocument();
+
+        public String getXmlDocumentAsString();    
+        public String getXsdDocumentAsString();    
+    }
+
+    public interface Builder {
+        public void includePath(final String path);
+        public void includePathAndAnnotation(final String path, final String annotation);
+    }
+
+    public static class Exception extends RuntimeException { ... }
+
+    @Programmatic
+    public XmlSnapshotService.Snapshot snapshotFor(final Object domainObject);
+
+    @Programmatic
+    public XmlSnapshotService.Builder builderFor(final Object domainObject);
+
+    public Document asDocument(String xmlStr);
+
+    public &lt;T&gt; T getChildElementValue(final Element el, final String tagname, final Class&lt;T&gt; expectedCls);
+
+    public Element getChildElement(final Element el, final String tagname);
+
+    public String getChildTextValue(final Element el);
+}
+</code></pre>
+
+<p>where:</p>
+
+<ul>
+<li><code>asDocument()</code> is a convenience to convert xml string back into a W3C Document</li>
+<li><code>getChildElementValue()</code> is a convenience to extract the value of an XML element, based on its type.</li>
+<li><code>getChildElement()</code> is a convenience method to walk XML document.</li>
+<li><code>getChildTextValue()</code> is a convenience method to obtain value of child text node.</li>
+</ul>
+
 <h3>Usage</h3>
 
 <h3>Implementation</h3>

Modified: websites/staging/isis/trunk/content/documentation.html
==============================================================================
--- websites/staging/isis/trunk/content/documentation.html (original)
+++ websites/staging/isis/trunk/content/documentation.html Fri Feb  7 14:54:42 2014
@@ -768,10 +768,12 @@
 
 <ul>
 <li><a href="components/objectstores/jdo/eagerly-registering-entities.html">Eagerly Registering Entity Types</a></li>
-<li><a href="components/objectstores/jdo/publishing-service-jdo.html">Publishing Service on JDO</a> </li>
-<li><a href="components/objectstores/jdo/auditing-service-jdo.html">Auditing Service on JDO</a></li>
 <li><a href="components/objectstores/jdo/exception-recognizers-jdo.html">Exception Recognizers</a></li>
-<li><a href="components/objectstores/jdo/settings-services-jdo.html">Settings Services on JDO</a> [1.3.0]</p>
+<li><a href="components/objectstores/jdo/settings-services-jdo.html">Settings Services on JDO</a></li>
+<li><a href="components/objectstores/jdo/command-service-jdo.html">Command Service on JDO</a> [1.4.0-snapshot, stub]</li>
+<li><a href="components/objectstores/jdo/command-service-jdo.html">Background Command Service on JDO</a> [1.4.0-snapshot, stub]</li>
+<li><a href="components/objectstores/jdo/publishing-service-jdo.html">Publishing Service on JDO</a> </li>
+<li><a href="components/objectstores/jdo/auditing-service-jdo.html">Auditing Service on JDO</a></p>
 
 <p></div>
 </div></li>