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/05/23 11:36:22 UTC

svn commit: r862841 [1/24] - in /websites/staging/isis/trunk: cgi-bin/ content/ content/applib-guide/ content/applib-guide/domain-services/ content/applib-guide/how-tos/ content/applib-guide/images/ content/applib-guide/recognized-annotations/ content/...

Author: buildbot
Date: Thu May 23 09:36:18 2013
New Revision: 862841

Log:
Staging update by buildbot for isis

Added:
    websites/staging/isis/trunk/content/applib-guide/domain-services/
    websites/staging/isis/trunk/content/applib-guide/domain-services/000-about.html
    websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-010-How-to-register-domain-services,-repositories-and-factories.html
    websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-020-How-to-write-a-typical-domain-service.html
    websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-030-How-to-use-a-generic-repository.html
    websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-040-How-to-write-a-custom-repository.html
    websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-050-How-to-use-Factories.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/000-about.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-000-How-to-write-a-basic-Domain-Entity-or-Service.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-010-How-to-have-a-domain-entity-be-a-POJO.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-020-How-to-have-a-domain-service-be-a-POJO.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-030-How-to-add-a-property-to-a-domain-entity.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-040-How-to-specify-a-title-for-a-domain-entity.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-050-How-to-add-a-collection-to-a-domain-entity.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-060-How-to-add-an-action-to-a-domain-entity-or-service.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-070-How-to-specify-the-icon-for-a-domain-entity.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-080-How-to-specify-the-order-in-which-properties-or-collections-are-displayed.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-090-How-to-specify-the-order-in-which-actions-appear-on-the-menu.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-100-How-to-make-a-property-optional.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-110-How-to-make-an-action-parameter-optional.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-120-How-to-specify-the-size-of-String-properties.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-130-How-to-specify-the-size-of-String-action-parameters.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-140-How-to-specify-names-or-descriptions-for-an-action-parameter.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-150-How-to-inject-services-into-a-domain-entity-or-other-service.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-01-160-How-to-create-or-delete-objects-within-your-code.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-000-How-to-add-business-rules.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-010-How-to-hide-a-property.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-020-How-to-hide-a-collection.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-030-How-to-hide-an-action.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-040-How-to-specify-that-none-of-an-object's-members-is-visible.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-050-How-to-prevent-a-property-from-being-modified.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-060-How-to-prevent-a-collection-from-being-modified.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-070-How-to-prevent-an-action-from-being-invoked.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-080-How-to-specify-that-none-of-an-object's-members-can-be-modified-or-invoked.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-090-How-to-specify-that-an-object-is-immutable.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-100-How-to-validate-user-input-for-a-property.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-110-How-to-validate-an-object-being-added-or-removed-from-a-collection.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-120-How-to-validate-an-action-parameter-argument.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-02-130-How-to-validate-declaratively-using-MustSatisfy.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-03-000-How-to-provide-drop-downs-and-default-values.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-03-010-How-to-specify-a-set-of-choices-for-a-property.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-03-020-How-to-specify-a-set-of-choices-for-an-action-parameter.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-03-030-How-to-specify-that-a-class-of-objects-has-a-limited-number-of-instances.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-03-040-How-to-find-an-entity-(for-an-action-parameter-or-property)-using-auto-complete.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-03-050-How-to-specify-default-values-for-an-action-parameter.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-04-000-How-to-derive-properties-and-collections-and-other-side-effects.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-04-010-How-to-make-a-derived-property.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-04-020-How-to-make-a-derived-collection.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-04-030-How-to-inline-the-results-of-a-query-only-repository-action.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-04-040-How-to-trigger-other-behaviour-when-a-property-is-changed.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-04-050-How-to-trigger-other-behaviour-when-an-object-is-added-or-removed.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-04-060-How-to-set-up-and-maintain-bidirectional-relationships.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-05-000-How-to-provide-additional-UI-hints.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-05-010-How-to-specify-a-name-or-description-for-an-object.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-05-020-How-to-specify-a-name-or-description-for-a-property.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-05-030-How-to-specify-a-name-or-description-for-a-collection.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-05-040-How-to-specify-names-or-description-for-an-action.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-05-050-How-to-specify-the-icon-for-an-individual-objects-state.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-06-000-How-to-deal-with-errors.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-06-010-How-to-pass-a-messages-and-errors-back-to-the-user.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-06-020-How-to-deal-with-an-unexpected-error.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-07-000-How-to-handle-entity-persistence-lifecycle.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-07-010-How-to-set-up-the-initial-value-of-a-property-programmatically.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-07-020-How-to-insert-behaviour-into-the-object-life-cycle.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-07-030-How-to-ensure-object-is-in-valid-state.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-07-040-How-to-specify-that-an-object-should-not-be-persisted.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-07-050-How-to-perform-lazy-loading.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-07-060-How-to-perform-dirty-object-tracking.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-08-000-How-to-handle-security-concerns.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-08-010-Hiding,-disabling-or-validating-for-specific-users-or-roles.html
    websites/staging/isis/trunk/content/applib-guide/how-tos/how-to-08-020-How-to-use-Isis-authorization-manager.html
    websites/staging/isis/trunk/content/applib-guide/reference/
    websites/staging/isis/trunk/content/applib-guide/reference/DomainObjectContainer.html
    websites/staging/isis/trunk/content/applib-guide/reference/Event.html
    websites/staging/isis/trunk/content/applib-guide/reference/Recognized-Methods-and-Prefixes.html
    websites/staging/isis/trunk/content/applib-guide/reference/Security.html
    websites/staging/isis/trunk/content/applib-guide/reference/Utility.html
    websites/staging/isis/trunk/content/applib-guide/reference/images/
    websites/staging/isis/trunk/content/applib-guide/reference/images/Events.png   (with props)
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/000-about.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/ActionOrder.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/ActionSemantics.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Aggregated.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Audited.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/AutoComplete.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Bounded.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Bulk.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Debug.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Defaulted.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/DescribedAs.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Disabled.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Encodable.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/EqualByContent.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Exploration.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Facets.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/FieldOrder.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Hidden.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Idempotent (deprecated).html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Ignore (deprecated).html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Immutable.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Mask.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/MaxLength.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/MemberGroups.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/MemberOrder.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/MultiLine.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/MustSatisfy.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Named.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/NotContributed.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/NotInServiceMenu.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/NotPersistable.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/NotPersisted.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/ObjectType.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Optional.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Paged.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Parseable.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Plural.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Programmatic.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Prototype.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/PublishedAction.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/PublishedObject.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/QueryOnly.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/RegEx.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Render.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Resolve.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Title.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/TypeOf.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/TypicalLength.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/Value.html
    websites/staging/isis/trunk/content/applib-guide/reference/recognized-annotations/ViewModel.html
    websites/staging/isis/trunk/content/applib-guide/supporting-features/000-about.html
    websites/staging/isis/trunk/content/applib-guide/supporting-features/03-Fixtures-and-SwitchUser.html
    websites/staging/isis/trunk/content/applib-guide/supporting-features/04-XML-Snapshots.html
    websites/staging/isis/trunk/content/applib-guide/value-types/000-about.html
    websites/staging/isis/trunk/content/applib-guide/value-types/020-Built-in-Value-Types.html
    websites/staging/isis/trunk/content/applib-guide/value-types/030-Custom-Value-Types.html
    websites/staging/isis/trunk/content/applib-guide/value-types/04-Third-party-Value-Types.html
Removed:
    websites/staging/isis/trunk/content/applib-guide/images/
    websites/staging/isis/trunk/content/applib-guide/isis-applib.html
    websites/staging/isis/trunk/content/applib-guide/recognized-annotations/
    websites/staging/isis/trunk/content/applib-guide/recognized-methods/
    websites/staging/isis/trunk/content/contributors/updating-the-applib-docs.html
    websites/staging/isis/trunk/content/core/applib.html
Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    websites/staging/isis/trunk/content/applib-guide/applib-guide-intro.html
    websites/staging/isis/trunk/content/components/security/sql/release-notes/about.html
    websites/staging/isis/trunk/content/documentation.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu May 23 09:36:18 2013
@@ -1 +1 @@
-1485103
+1485626

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu May 23 09:36:18 2013
@@ -1 +1 @@
-1485103
+1485626

Modified: websites/staging/isis/trunk/content/applib-guide/applib-guide-intro.html
==============================================================================
--- websites/staging/isis/trunk/content/applib-guide/applib-guide-intro.html (original)
+++ websites/staging/isis/trunk/content/applib-guide/applib-guide-intro.html Thu May 23 09:36:18 2013
@@ -3,7 +3,7 @@
   <head>
 
     <meta charset="utf-8">
-      <title></title>
+      <title>Apache Isis Programming Model
</title>
     <meta name="description" content="">
     <meta name="author" content="">
 
@@ -112,7 +112,7 @@
       };
       function twshare () {
           window.open(
-                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=",
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Apache Isis Programming Model
",
                   'Share on Twitter',
                   'width=800,height=526');
       };
@@ -246,32 +246,42 @@
 
 <div class="page-header">
 <p><a href="./../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../applib-guide/about.html">Applib Guide</a></p>
-<h1>
+<h1>Apache Isis Programming Model
 
 </h1>
 </div>
 
-<h1>Apache Isis Programming Model</h1>
+<p><em>Apache Isis</em> works using convention-over-configuration; you write your domain objects following a set of conventions, and these are interpreted by the framework in order to render, persist, remote or otherwise interact with your domain model.</p>
 
-<p><em>Apache Isis</em> is designed to allow programmers rapidly develop domain-driven applications following the <a href="http://en.wikipedia.org/wiki/Naked_Objects">Naked
-Objects</a> pattern. It is made
-up of a core plus a number of components for each of the main APIs:
-objectstores, security, viewers and profilestores.</p>
-
-<p>This guide is written for programmers looking to understand the
-programming conventions, annotations and supporting utilities within the
-<em>Apache Isis</em> application library (or <em>applib</em>), in order that the
-framework can correctly pick up and render the business rules and logic
-encoded within their domain objects.</p>
-
-<p><em>Apache Isis</em> is hosted at the <a href="http://incubator.apache.org/isis">Apache
-Foundation</a>, and is licensed under
-<a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache Software License
-v2</a>.</p>
-
-<p>The conventions of the programming model are best described as
-'intentional' - they convey an intention as to how domain objects, their
-properties and behaviours, are to be made available to users. The
+<p>These conventions are together known as the Apache Isis Programming Model. The Apache Isis Application Library - or AppLib - constitutes those elements of the programming model that are declarative (such as annotations and interfaces). It also contains the <code>DomainObjectContainer</code> interface, which is normally injected into your domain objects and represents the only point of coupling from your domain into the framework.</p>
+
+<p>This guide to the programming model breaks into three main parts:</p>
+
+<ul>
+<li>How-tos</p>
+
+<ul>
+<li><a href="./how-tos/000-about.html">How-to write Domain Entities</a></li>
+<li><a href="./domain-services/000-about.html">Domain Services, Repositories and Factories</a></li>
+<li><a href="./value-types/000-about.html">Value Types</a></li>
+</ul></li>
+<li><a href="./supporting-features/000-about.html">Supporting Features</a></li>
+<li>Reference:</p>
+
+<ul>
+<li><a href="./reference/Recognized-Methods-and-Prefixes.html">Recognized Methods and Prefixes</a></li>
+<li><a href="./reference/recognized-annotations/000-about.html">Recognized Annotations</a></li>
+<li><a href="./reference/DomainObjectContainer.html">DomainObjectContainer interface</a></li>
+<li><a href="./reference/Security.html">Security</a></li>
+<li><a href="./reference/Utility.html">Applib Utility Classes</a></li>
+<li><a href="./reference/Event.html">Applib Events</a></li>
+</ul></li>
+</ul>
+
+<p>You will note that to a large extent the conventions of the programming 
+model can be described as 'intentional' - they convey an intention as to 
+how domain objects, their properties and behaviours, are to be made 
+available to users. But the
 specific way in which those intentions are interpreted or implemented
 will depend upon the framework, and/or the particular components or
 options selected within that framework.</p>
@@ -287,10 +297,6 @@ mechanism will suffice: a viewer might n
 instead might provide a capability to select from an <code>@Bounded</code> class by
 typing the initial letters of the desired instance.</p>
 
-<p>This part of the guide is a set of chapters that provides how-to's for
-writing domain objects, by which we mean domain entities, value types,
-services and repositories/factories.</p>
-
 
 
       </div>

Added: websites/staging/isis/trunk/content/applib-guide/domain-services/000-about.html
==============================================================================
--- websites/staging/isis/trunk/content/applib-guide/domain-services/000-about.html (added)
+++ websites/staging/isis/trunk/content/applib-guide/domain-services/000-about.html Thu May 23 09:36:18 2013
@@ -0,0 +1,319 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title></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">
+    <link href="./../../bootstrap-mods.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=",
+                  '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-twipsy.js"></script>
+    <script src="./../../javascript/bootstrap-buttons.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 src="./../../javascript/bootstrap-tabs.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="#">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="./../../applib-guide/about.html">Applib Guide</a>&nbsp;&raquo&nbsp;<a href="./../../applib-guide/domain-services/about.html">Domain Services</a></p>
+<h1>
+
+</h1>
+</div>
+
+<h1>How to Write Domain Services, Repositories and Factories</h1>
+
+<blockquote>
+  <p>How-to's relating to writing services, repositories and factories.</p>
+</blockquote>
+
+<p>This section contains how-to's for programming conventions that writing
+domain services (by which we also mean repositories and factories); ie
+everything that isn't a domain object or a value type.</p>
+
+<p>Domain services are instantiated once and once only by the framework,
+and are used to centralize any domain logic that does not logically
+belong in a domain entity or value. <em>Isis</em> will automatically inject
+services into every domain entity that requests them, and into each
+other.</p>
+
+<p>How-to's:</p>
+
+<ul>
+<li><a href="./how-to-09-010-How-to-register-domain-services,-repositories-and-factories.html">How to register domain services, repositories and factories</a></li>
+<li><a href="./how-to-09-020-How-to-write-a-typical-domain-service.html">How to write a typical domain service</a></li>
+<li><a href="./how-to-09-030-How-to-use-a-generic-repository.html">How to use a generic repository</a></li>
+<li><a href="./how-to-09-040-How-to-write-a-custom-repository.html">How to write a custom repository</a></li>
+<li><a href="./how-to-09-050-How-to-use-Factories.html">How to use Factories</a></li>
+</ul>
+
+
+
+      </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/applib-guide/domain-services/how-to-09-010-How-to-register-domain-services,-repositories-and-factories.html
==============================================================================
--- websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-010-How-to-register-domain-services,-repositories-and-factories.html (added)
+++ websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-010-How-to-register-domain-services,-repositories-and-factories.html Thu May 23 09:36:18 2013
@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title></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">
+    <link href="./../../bootstrap-mods.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=",
+                  '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-twipsy.js"></script>
+    <script src="./../../javascript/bootstrap-buttons.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 src="./../../javascript/bootstrap-tabs.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="#">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="./../../applib-guide/about.html">Applib Guide</a>&nbsp;&raquo&nbsp;<a href="./../../applib-guide/domain-services/about.html">Domain Services</a></p>
+<h1>
+
+</h1>
+</div>
+
+<h2>How to register domain services, repositories and factories</h2>
+
+<p>All domain services (which includes repositories and factories) should be registered in the <code>isis.properties</code> configuration file, under the <code>isis.services.prefix</code> (a common package name) and <code>isis.services</code> key (a comma-separated list).</p>
+
+<p>For example:</p>
+
+<pre><code>isis.services.prefix = org.apache.isis.support.prototype.objstore.dflt
+isis.services = employee.EmployeeRepositoryDefault, claim.ClaimRepositoryDefault
+</code></pre>
+
+<p>This will instantiate a single instance of each of the two services listed.</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/applib-guide/domain-services/how-to-09-020-How-to-write-a-typical-domain-service.html
==============================================================================
--- websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-020-How-to-write-a-typical-domain-service.html (added)
+++ websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-020-How-to-write-a-typical-domain-service.html Thu May 23 09:36:18 2013
@@ -0,0 +1,382 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title></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">
+    <link href="./../../bootstrap-mods.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=",
+                  '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-twipsy.js"></script>
+    <script src="./../../javascript/bootstrap-buttons.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 src="./../../javascript/bootstrap-tabs.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="#">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="./../../applib-guide/about.html">Applib Guide</a>&nbsp;&raquo&nbsp;<a href="./../../applib-guide/domain-services/about.html">Domain Services</a></p>
+<h1>
+
+</h1>
+</div>
+
+<h2>How to write a typical domain service</h2>
+
+<p>Services consist of a set of logically grouped actions, and as such follow the same conventions as for entities <!--(see ?)-->. However, a service cannot have (persisted) properties, nor can it have (persisted) collections.</p>
+
+<p>For convenience you can inherit from <code>AbstractService</code> or one of its subclasses <!--(see ?)-->, but this is not mandatory.</p>
+
+<h3>The getId() method</h3>
+
+<p>Optionally, a service may provide a <code>getId()</code> method:</p>
+
+<pre><code>public String getId()
+</code></pre>
+
+<p>This method returns a logical identifier for a service, independent of its implementation. Currently it used only by perspectives, providing a label by which to record the services that are available for a current user's profile. <!--See ? for more about profiles and perspectives.--></p>
+
+<h3>(Suppressing) contributed actions</h3>
+
+<p>Any n-parameter action provided by a service will automatically be contributed to the list of actions for each of its (entity) parameters. From the viewpoint of the entity the action is called a contributed action.</p>
+
+<p>For example, given a service:</p>
+
+<pre><code>public interface Library {
+    public Loan borrow(Loanable l, Borrower b);
+}
+</code></pre>
+
+<p>and the entities:</p>
+
+<pre><code>public class Book implements Loanable { ... }y
+</code></pre>
+
+<p>and</p>
+
+<pre><code>public class LibraryMember implements Borrower { ... }
+</code></pre>
+
+<p>then the <code>borrow(...)</code> action will be contributed to both <code>Book</code> and to <code>LibraryMember</code>.</p>
+
+<p>This is an important capability because it helps to decouple the concrete classes from the services.</p>
+
+<p>If necessary, though, this behaviour can be suppressed by annotating the service action with  <code>@org.apache.isis.applib.annotations.NotContributed</code>.</p>
+
+<p>For example:</p>
+
+<pre><code>public interface Library {
+    @NotContributed
+    public Loan borrow(Loanable l, Borrower b);
+}
+</code></pre>
+
+<p>If annotated at the interface level, then the annotation will be inherited by every concrete class. Alternatively the annotation can be applied at the implementation class level and only apply to that particular implementation.</p>
+
+<p>Note that an action annotated as being <code>@NotContributed</code> will still appear in the service menu for the service. If an action should neither be contributed nor appear in service menu items, then simply annotate it as <code>@Hidden</code>.</p>
+
+<h3>(Suppressing) service menu items</h3>
+
+<p>By default every action of a service (by which we also mean repositories and factories) will be rendered in the viewer, eg as a menu item for that service menu. This behaviour can be suppressed by annotating the action using <code>@org.apache.isis.applib.annotations.NotInServiceMenu</code>.</p>
+
+<p>For example:</p>
+
+<pre><code>public interface Library {
+    @NotInServiceMenu
+    public Loan borrow(Loanable l, Borrower b);
+}
+</code></pre>
+
+<p>Note that an action annotated as being <code>@NotInServiceMenu</code> will still be contributed. If an action should neither be contributed nor appear in service menu items, then simply annotate it as <code>@Hidden</code>.</p>
+
+<p>Alternatively, this can be performed using a supporting method:</p>
+
+<pre><code>public class LibraryImpl implements Library {
+    public Loan borrow(Loanable l, Borrower b) { ... }
+    public boolean notInServiceMenuBorrow() { ... }
+}
+</code></pre>
+
+<h3>(Suppressing) service menus</h3>
+
+<p>If none of the service menu items should appear, then the service itself should be annotated as <code>@Hidden</code>.</p>
+
+<p>For example:</p>
+
+<pre><code>@Hidden
+public interface EmailService {
+    public void sendEmail(String to, String from, String subject, String body);
+    public void forwardEmail(String to, String from, String subject, String body);
+}
+</code></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/applib-guide/domain-services/how-to-09-030-How-to-use-a-generic-repository.html
==============================================================================
--- websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-030-How-to-use-a-generic-repository.html (added)
+++ websites/staging/isis/trunk/content/applib-guide/domain-services/how-to-09-030-How-to-use-a-generic-repository.html Thu May 23 09:36:18 2013
@@ -0,0 +1,314 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title></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">
+    <link href="./../../bootstrap-mods.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=",
+                  '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-twipsy.js"></script>
+    <script src="./../../javascript/bootstrap-buttons.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 src="./../../javascript/bootstrap-tabs.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="#">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="./../../applib-guide/about.html">Applib Guide</a>&nbsp;&raquo&nbsp;<a href="./../../applib-guide/domain-services/about.html">Domain Services</a></p>
+<h1>
+
+</h1>
+</div>
+
+<h2>How to use a generic repository</h2>
+
+<p>To speed up initial prototype the framework allows so-called generic repositories to be defined, one per entity. Such a repository will, for its specified type, provide methods to:</p>
+
+<ul>
+<li>Create a new transient instance</li>
+<li>Create a new persisted instance</li>
+<li>Find all persisted instances</li>
+<li>Find instances with a specified title</li>
+</ul>
+
+<p>To register such a service prefix the class name with the prefix <code>repository#</code>.</p>
+
+<p>For example:</p>
+
+<pre><code>isis.services = repository#dom.Booking
+</code></pre>
+
+<p>Over time, you should expect most if not all of these generic
+repositories will be replaced with regular repository types <!--(see ?)-->.</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>