You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/11/02 19:35:45 UTC

[01/12] isis git commit: ISIS-1195: fixing missing licenses.

Repository: isis
Updated Branches:
  refs/heads/master 8f98cf47f -> d80a3f460


ISIS-1195: fixing missing licenses.

Also updates to RAT plugin itself, minor fix to release docs


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b36b9237
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b36b9237
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b36b9237

Branch: refs/heads/master
Commit: b36b9237a35c7e21488e916c9baf64085b880266
Parents: 8f98cf4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Oct 26 08:24:33 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Oct 26 08:24:33 2015 +0000

----------------------------------------------------------------------
 adocs/documentation/Gemfile.lock                  |  3 ---
 .../guides/_cg_committers_cutting-a-release.adoc  |  2 +-
 .../specimpl/ObjectActionMixedInTest.java         | 18 ++++++++++++++++++
 core/pom.xml                                      |  5 ++++-
 ...PersistenceSessionFactoryMetamodelRefiner.java | 18 ++++++++++++++++++
 5 files changed, 41 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/b36b9237/adocs/documentation/Gemfile.lock
----------------------------------------------------------------------
diff --git a/adocs/documentation/Gemfile.lock b/adocs/documentation/Gemfile.lock
index 808cd9a..6a495d9 100644
--- a/adocs/documentation/Gemfile.lock
+++ b/adocs/documentation/Gemfile.lock
@@ -43,6 +43,3 @@ DEPENDENCIES
   tilt
   wdm (>= 0.1.0)
   webrick
-
-BUNDLED WITH
-   1.10.6

http://git-wip-us.apache.org/repos/asf/isis/blob/b36b9237/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc b/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
index 7362814..3e76549 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
@@ -92,7 +92,7 @@ Double check that the version number of the core POM (`core/pom.xml`) should ref
 ----
 <groupId>org.apache.isis.core</groupId>
 <artifactId>isis</artifactId>
-<version>1.11.0-SNAPSHOT</version>
+<version>1.10.0-SNAPSHOT</version>
 ----
 
 Also, check that there are no snapshot dependencies:

http://git-wip-us.apache.org/repos/asf/isis/blob/b36b9237/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java
index 9707af6..1677c7e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java
@@ -1,3 +1,21 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/isis/blob/b36b9237/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 9548411..33d03a0 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -444,6 +444,7 @@
                             <exclude>**/MANIFEST.MF</exclude>
                             <exclude>**/*.ucd</exclude>
                             <exclude>**/*.ucls</exclude>
+                            <exclude>**/*.iml</exclude>
 
                             <exclude>**/xml/objects/**</exclude>
                             <exclude>**/test.data</exclude>
@@ -452,7 +453,9 @@
                             <exclude>**/jquery.zclip.js</exclude>
                             <exclude>**/bootstrap-growl.js</exclude>
                             <exclude>**/moment.js</exclude>
-
+                            
+                            <exclude>**/wicket-xhtml1.4-strict.dtd</exclude>
+                            
                             <exclude>**/bootstrap-datetimepicker.min.css</exclude>
                             <exclude>**/bootstrap-datetimepicker.css</exclude>
                             <exclude>**/select2-bootstrap.css</exclude>

http://git-wip-us.apache.org/repos/asf/isis/blob/b36b9237/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java
index f8b4428..71a3f26 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionFactoryMetamodelRefiner.java
@@ -1,3 +1,21 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
 package org.apache.isis.core.runtime.system.persistence;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;


Re: [09/12] isis git commit: ISIS-1226: detach EntityModels in BreadcrumbModel

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
thanks for the catch... was going to put the detach logic here, then
discovered I could override detach() in the class itself.

will remove.

Cheers
Dan



On 2 November 2015 at 18:47, Martin Grigorov <mg...@apache.org> wrote:

> Hi Dan,
>
> On Mon, Nov 2, 2015 at 7:35 PM, <da...@apache.org> wrote:
>
> > -
> > +
> > +        final AuthenticatedWebSessionForIsis
> > authenticatedWebSessionForIsis = AuthenticatedWebSessionForIsis.get();
> > +
> >
>
> What is the purpose of this ?
> It seems this local variable is not used later.
>
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>

Re: [09/12] isis git commit: ISIS-1226: detach EntityModels in BreadcrumbModel

Posted by Martin Grigorov <mg...@apache.org>.
Hi Dan,

On Mon, Nov 2, 2015 at 7:35 PM, <da...@apache.org> wrote:

> -
> +
> +        final AuthenticatedWebSessionForIsis
> authenticatedWebSessionForIsis = AuthenticatedWebSessionForIsis.get();
> +
>

What is the purpose of this ?
It seems this local variable is not used later.


Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

[09/12] isis git commit: ISIS-1226: detach EntityModels in BreadcrumbModel

Posted by da...@apache.org.
ISIS-1226: detach EntityModels in BreadcrumbModel


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/a7519835
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/a7519835
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/a7519835

Branch: refs/heads/master
Commit: a7519835dcede00bc7c4ddd84882c9900a8e3a37
Parents: 2498f82
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 17:42:22 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 17:43:40 2015 +0000

----------------------------------------------------------------------
 .../wicket/AuthenticatedWebSessionForIsis.java            |  8 +++++++-
 .../viewer/integration/wicket/WebRequestCycleForIsis.java |  4 +++-
 .../components/widgets/breadcrumbs/BreadcrumbModel.java   | 10 +++++++---
 .../components/widgets/breadcrumbs/BreadcrumbPanel.java   | 10 ++++++++--
 4 files changed, 25 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a7519835/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
index 05db776..80e22c1 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
@@ -113,7 +113,13 @@ public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession impl
         final List<String> roles = authenticationSession.getRoles();
         return new Roles(roles.toArray(new String[roles.size()]));
     }
-    
+
+    @Override
+    public void detach() {
+        breadcrumbModel.detach();
+        super.detach();
+    }
+
     // /////////////////////////////////////////////////
     // Breadcrumbs and Bookmarks support
     // /////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/a7519835/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
index 098efde..c9297c1 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
@@ -98,7 +98,9 @@ public class WebRequestCycleForIsis extends AbstractRequestCycleListener {
         if(LOG.isDebugEnabled()) {
             LOG.debug("onRequestHandlerExecuted: handler: " + handler);
         }
-        
+
+        final AuthenticatedWebSessionForIsis authenticatedWebSessionForIsis = AuthenticatedWebSessionForIsis.get();
+
         final IsisSession session = getIsisContext().getSessionInstance();
         if (session != null) {
             try {

http://git-wip-us.apache.org/repos/asf/isis/blob/a7519835/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
index 02b1ce3..6f58943 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
@@ -118,9 +118,13 @@ public class BreadcrumbModel implements Serializable {
         if(oidStr == null) {
             return null;
         }
-        return entityModelByOidStr.get(oidStr);
+        final EntityModel entityModel = entityModelByOidStr.get(oidStr);
+        return entityModel;
     }
 
-
-
+    public void detach() {
+        for (EntityModel entityModel : list) {
+            entityModel.detach();
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/a7519835/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
index 6d19acc..7ba1cd7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
@@ -17,10 +17,13 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs;
 
 import java.util.Collection;
+import java.util.List;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2Choice;
 import org.wicketstuff.select2.Settings;
@@ -63,7 +66,9 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
             @Override
             protected Object getId(EntityModel choice) {
                 try {
-                    return PageParameterNames.OBJECT_OID.getStringFrom(choice.getPageParameters());
+                    final PageParameters pageParameters = choice.getPageParameters();
+                    final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
+                    return oidStr;
                 } catch (Exception ex) {
                     breadcrumbModel.remove(choice);
                     return null;
@@ -72,7 +77,8 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
 
             @Override
             public void query(String term, int page, Response<EntityModel> response) {
-                response.addAll(breadcrumbModel.getList());
+                final List<EntityModel> list = breadcrumbModel.getList();
+                response.addAll(list);
             }
 
             @Override


[04/12] isis git commit: ISIS-1214 Three state checkbox doesn't work

Posted by da...@apache.org.
ISIS-1214 Three state checkbox doesn't work

Use Wicket-Bootstrap 0.9.13 that comes with CheckboxX 1.5.4.
Do not use the native UI for the three state checkbox widget


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/f06841f3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/f06841f3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/f06841f3

Branch: refs/heads/master
Commit: f06841f33291363e02c2a9c955459375549f8a5c
Parents: e654f93
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Oct 14 22:03:01 2015 +0200
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 14:01:08 2015 +0000

----------------------------------------------------------------------
 core/pom.xml                                                       | 2 +-
 .../wicket/ui/components/scalars/primitive/BooleanPanel.java       | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/f06841f3/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index c7c2f0c..089843b 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -126,7 +126,7 @@
         <wicketstuff.version>6.20.0</wicketstuff.version>
 
         <wicket-webjars.version>0.4.7</wicket-webjars.version>
-        <wicket-bootstrap.version>0.9.12</wicket-bootstrap.version>
+        <wicket-bootstrap.version>0.9.13</wicket-bootstrap.version>
         <wicket-source.version>6.0.0.8</wicket-source.version>
 
         <wicket-select2.version>6.20.0</wicket-select2.version>

http://git-wip-us.apache.org/repos/asf/isis/blob/f06841f3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
index b23c2bd..7c0dcc5 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
@@ -49,7 +49,6 @@ public class BooleanPanel extends ScalarPanelAbstract {
     private static final CheckBoxXConfig THREE_STATE_CONFIG = new CheckBoxXConfig()
         .withSize(CheckBoxXConfig.Sizes.xs)
         .withEnclosedLabel(false)
-        .withUseNative(true)
         .withIconChecked("<i class='fa fa-fw fa-check'></i>")
         .withIconNull("<i class='fa fa-fw fa-square'></i>");
 


[06/12] isis git commit: ISIS-1184: inject services into Specification implementations...

Posted by da...@apache.org.
ISIS-1184: inject services into Specification implementations...

... as per @ActionParameter(mustSatisfy=...) etc


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/3693daaa
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/3693daaa
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/3693daaa

Branch: refs/heads/master
Commit: 3693daaae4f74d78ec545f91160de001f30fffb3
Parents: 7e53c03
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 10:08:02 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 14:34:03 2015 +0000

----------------------------------------------------------------------
 .../MustSatisfySpecificationFacetAbstract.java               | 8 ++++++++
 ...SatisfySpecificationFacetFactoryProcessParameterTest.java | 6 ++++++
 ...tSatisfySpecificationFacetFactoryProcessPropertyTest.java | 4 ++++
 3 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3693daaa/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
index 19345c0..755338b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.objectvalue.mustsatisfyspec;
 
 import java.util.List;
+
 import org.apache.isis.applib.events.ValidityEvent;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.spec.Specification;
@@ -55,6 +56,7 @@ public abstract class MustSatisfySpecificationFacetAbstract extends FacetAbstrac
             final FacetHolder holder,
             final ServicesInjector servicesInjector) {
         super(type(), holder, Derivation.NOT_DERIVED);
+        inject(specifications, servicesInjector);
         this.specifications = specifications;
 
         final TranslationService translationService = servicesInjector.lookupService(TranslationService.class);
@@ -64,6 +66,12 @@ public abstract class MustSatisfySpecificationFacetAbstract extends FacetAbstrac
         specificationEvaluator = new SpecificationEvaluator(translationService, translationContext);
     }
 
+    private static void inject(
+            final List specifications, final ServicesInjector servicesInjector) {
+        final List<Object> specificationsAsObjects = specifications;
+        servicesInjector.injectServicesInto(specificationsAsObjects);
+    }
+
     @Override
     public String invalidates(final ValidityContext<? extends ValidityEvent> validityContext) {
         if (!(validityContext instanceof ProposedHolder)) {

http://git-wip-us.apache.org/repos/asf/isis/blob/3693daaa/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
index 56f5894..e28e4a2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
@@ -20,11 +20,14 @@
 package org.apache.isis.core.metamodel.facets.param.parameter;
 
 import java.lang.reflect.Method;
+import java.util.List;
+
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
@@ -68,6 +71,9 @@ public class MustSatisfySpecificationFacetFactoryProcessParameterTest {
             allowing(mockServicesInjector).lookupService(TranslationService.class);
             will(returnValue(mockTranslationService));
         }});
+        context.checking(new Expectations() {{
+            allowing(mockServicesInjector).injectServicesInto(with(any(List.class)));
+        }});
 
 
         domainObjectClassWithoutAnnotation = DomainObjectWithoutMustSatisfyAnnotations.class;

http://git-wip-us.apache.org/repos/asf/isis/blob/3693daaa/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
index 86fd746..67eafec 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.properties.property;
 
 import java.lang.reflect.Method;
+import java.util.List;
 
 import org.jmock.Expectations;
 import org.jmock.auto.Mock;
@@ -71,6 +72,9 @@ public class MustSatisfySpecificationFacetFactoryProcessPropertyTest {
             allowing(mockServicesInjector).lookupService(TranslationService.class);
             will(returnValue(mockTranslationService));
         }});
+        context.checking(new Expectations() {{
+            allowing(mockServicesInjector).injectServicesInto(with(any(List.class)));
+        }});
 
         domainObjectClassWithoutAnnotation = DomainObjectWithoutMustSatisfyAnnotations.class;
         domainObjectClassWithAnnotation = DomainObjectWithMustSatisfyAnnotations.class;


[05/12] isis git commit: ISIS-1222: inject services into Command objects once created by CommandService

Posted by da...@apache.org.
ISIS-1222: inject services into Command objects once created by CommandService


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/7e53c036
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/7e53c036
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/7e53c036

Branch: refs/heads/master
Commit: 7e53c0366cd70943a4bc156ac2d59480bc47d272
Parents: f06841f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 09:39:12 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 14:17:24 2015 +0000

----------------------------------------------------------------------
 .../core/runtime/system/transaction/IsisTransactionManager.java    | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/7e53c036/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
index f7c1bf1..123f724 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
@@ -350,6 +350,8 @@ public class IsisTransactionManager implements SessionScopedComponent {
                 commandService != null 
                     ? commandService.create() 
                     : new CommandDefault();
+        servicesInjector.injectServicesInto(command);
+
         commandContext.setCommand(command);
 
         if(command.getTimestamp() == null) {


[12/12] isis git commit: ISIS-1195: recreating simpleapp archetype

Posted by da...@apache.org.
ISIS-1195: recreating simpleapp archetype


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d80a3f46
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d80a3f46
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d80a3f46

Branch: refs/heads/master
Commit: d80a3f460d8c6e09064e0b443ff161d4894b61a0
Parents: 7a820f6
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 18:16:36 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 18:16:36 2015 +0000

----------------------------------------------------------------------
 example/archetype/simpleapp/pom.xml             |   4 +-
 .../META-INF/maven/archetype-metadata.xml       |   6 +
 .../archetype-resources/.gitattributes          |  51 +++++
 .../resources/archetype-resources/.gitignore    |  42 ++++
 .../java/domainapp/dom/simple/SimpleObject.java |   5 +-
 .../archetype-resources/integtests/.gitignore   |   1 +
 .../integtests/translations.pot                 | 226 -------------------
 .../main/resources/archetype-resources/pom.xml  | 102 ++++++++-
 .../webapp/ide/eclipse/launch/.gitignore        |   8 +
 .../launch/SimpleApp-PROTOTYPE-jrebel.launch    |  33 ---
 .../SimpleApp-PROTOTYPE-no-fixtures.launch      |  25 --
 .../SimpleApp-PROTOTYPE-with-fixtures.launch    |  22 --
 .../launch/SimpleApp-SERVER-no-fixtures.launch  |  25 --
 .../archetype-resources/webapp/lib/.gitignore   |   5 +
 .../src/main/webapp/WEB-INF/translations-en.po  | 137 ++++++-----
 .../src/main/webapp/WEB-INF/translations-es.po  |  69 ++++--
 .../src/main/webapp/WEB-INF/translations-nl.po  |  70 ++++--
 .../src/main/webapp/WEB-INF/translations.po     |  73 ++++--
 .../projects/basic/archetype.properties         |   2 +-
 19 files changed, 456 insertions(+), 450 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/pom.xml b/example/archetype/simpleapp/pom.xml
index fb420bb..0a01558 100644
--- a/example/archetype/simpleapp/pom.xml
+++ b/example/archetype/simpleapp/pom.xml
@@ -29,14 +29,14 @@
             <extension>
                 <groupId>org.apache.maven.archetype</groupId>
                 <artifactId>archetype-packaging</artifactId>
-                <version>2.4</version>
+                <version>2.2</version>
             </extension>
         </extensions>
         <pluginManagement>
             <plugins>
                 <plugin>
                     <artifactId>maven-archetype-plugin</artifactId>
-                    <version>2.4</version>
+                    <version>2.2</version>
                 </plugin>
             </plugins>
         </pluginManagement>

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
index 7862c28..e9e1727 100644
--- a/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -62,6 +62,12 @@
                     </includes>
                 </fileSet>
                 <fileSet filtered="true" encoding="UTF-8">
+                    <directory>src/main/resources</directory>
+                    <includes>
+                        <include>**/*.xml</include>
+                    </includes>
+                </fileSet>
+                <fileSet filtered="true" encoding="UTF-8">
                     <directory>src/test/java</directory>
                     <includes>
                         <include>**/*.java</include>

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitattributes
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitattributes b/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitattributes
new file mode 100644
index 0000000..b1eafb6
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitattributes
@@ -0,0 +1,51 @@
+#
+#
+# text files are normalized (convert crlf => lf)
+# binary files are not normalized (binary is a macro for -text -diff)
+#
+#
+
+
+# Unless otherwise stated, assume text
+
+* text=auto
+
+
+*.java text diff=java
+*.html text diff=html
+*.xhtml text diff=html
+*.xml text
+*.txt text
+
+
+*.jar binary
+*.so binary
+*.dll binary
+
+# images
+*.jpg binary
+*.jpeg binary
+*.png binary
+*.pdn binary
+*.pdn binary
+
+
+*.cs     text diff=csharp
+
+*.sln    merge=union
+*.csproj merge=union
+*.vbproj merge=union
+*.fsproj merge=union
+*.dbproj merge=union
+
+*.doc	 diff=astextplain
+*.DOC	 diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot  diff=astextplain
+*.DOT  diff=astextplain
+*.pdf  diff=astextplain
+*.PDF	 diff=astextplain
+*.rtf	 diff=astextplain
+*.RTF	 diff=astextplain
+

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitignore
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitignore b/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitignore
new file mode 100644
index 0000000..0558e54
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitignore
@@ -0,0 +1,42 @@
+*~
+*.swp
+*.class
+bin/
+target/
+target-ide/
+logs/
+.settings/
+.project
+.classpath
+.idea
+*.iml
+
+JArchitectOut/
+*.jdproj
+
+neo4j_DB/
+
+# log files
+datanucleus.log
+isis.log
+i18n-po.log
+hs_err_pid*.log
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+dependency-reduced-pom.xml
+pom.xml.tag
+pom.xml.next
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+
+.clover/
+*.jdproj
+JArchitectOut/
+
+
+rebel.xml
+/translations.pot

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/domainapp/dom/simple/SimpleObject.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
index af19a3c..538d281 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/domainapp/dom/simple/SimpleObject.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.util.ObjectContracts;
@@ -94,9 +95,11 @@ public class SimpleObject implements Comparable<SimpleObject> {
     }
 
 
+
     public static class UpdateNameDomainEvent extends ActionDomainEvent<SimpleObject> {}
     @Action(
-            domainEvent = UpdateNameDomainEvent.class
+            domainEvent = UpdateNameDomainEvent.class,
+            semantics = SemanticsOf.IDEMPOTENT
     )
     public SimpleObject updateName(
             @Parameter(maxLength = NAME_LENGTH)

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/.gitignore
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/.gitignore b/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/.gitignore
new file mode 100644
index 0000000..88dfbbc
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/.gitignore
@@ -0,0 +1 @@
+/translations.pot

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/translations.pot
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/translations.pot
deleted file mode 100644
index 37c02a4..0000000
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/translations.pot
+++ /dev/null
@@ -1,226 +0,0 @@
-
-
-##############################################################################
-#
-# .pot file
-#
-# generated at: 2015-10-09 17:20:47
-# generated by: TranslationServicePo
-#
-# Translate this file to each required language and place in WEB-INF, eg:
-#
-#     /WEB-INF/translations-en_US.po
-#     /WEB-INF/translations-en.po
-#     /WEB-INF/translations-fr_FR.po
-#     /WEB-INF/translations-fr.po
-#     /WEB-INF/translations.po
-#
-# If the app uses TranslatableString (eg for internationalized validation
-# messages), or if the app calls the TranslationService directly, then ensure
-# that all text to be translated has been captured by running a full
-# integration test suite that exercises all relevant behaviour
-#
-##############################################################################
-
-#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
-msgid ".pot file name"
-msgstr ""
-
-
-#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
-msgid "Clear translation cache"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObjects#create()
-msgid "Create"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
-msgid "Discoverable"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
-msgid "Domain Objects"
-msgstr ""
-
-
-#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
-msgid "Download Translations"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject#updateName()
-msgid "Exclamation mark is not allowed"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObjects#findByName()
-msgid "Find By Name"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
-msgid "Fixture script"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
-msgid "Friendly Name"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject
-msgid "General"
-msgstr ""
-
-
-#: domainapp.app.services.homepage.HomePageService#homePage()
-msgid "Home Page"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObjects#listAll()
-msgid "List All"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScript#localName
-msgid "Local Name"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
-#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
-msgid "Lookup"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject#name
-#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
-#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
-msgid "Name"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
-msgid "New name"
-msgstr ""
-
-
-#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
-msgid "Object"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject#title()
-msgid "Object: {name}"
-msgstr ""
-
-
-#: domainapp.app.services.homepage.HomePageViewModel#objects
-msgid "Objects"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixtures.FixtureType#OTHER
-msgid "Other"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
-msgid "Parameters"
-msgstr ""
-
-
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
-#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
-msgid "Prototyping"
-msgstr ""
-
-
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
-msgid "Recreate Objects And Return First"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureResult#object
-msgid "Result"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureResult#className
-msgid "Result class"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureResult#key
-msgid "Result key"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
-msgid "Run Fixture Script"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScript
-msgid "Script"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
-#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
-msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObjects#title()
-msgid "Simple Objects"
-msgstr ""
-
-
-#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
-msgid "Switch To Reading Translations"
-msgstr ""
-
-
-#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
-msgid "Switch To Writing Translations"
-msgstr ""
-
-
-#: org.apache.isis.applib.fixturescripts.FixtureScript#type
-msgid "Type"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject#updateName()
-msgid "Update Name"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject#versionSequence
-msgid "Version Sequence"
-msgstr ""
-
-
-#: domainapp.dom.simple.SimpleObject
-msgid "name"
-msgstr ""
-
-
-
-
-
-##############################################################################
-# end of .pot file
-##############################################################################
-

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
index 3efdb37..096dc10 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
@@ -32,7 +32,7 @@
     </prerequisites>
 
     <properties>
-        <isis.version>1.10.0-SNAPSHOT</isis.version>
+        <isis.version>1.10.0</isis.version>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -211,6 +211,106 @@
                     <artifactId>jetty-console-maven-plugin</artifactId>
                     <version>1.56</version>
                 </plugin>
+
+                <!-- Apache Release Audit Tool -->
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <version>0.10</version>
+                    <configuration>
+                        <addDefaultLicenseMatchers>true</addDefaultLicenseMatchers>
+                        <excludeSubProjects>true</excludeSubProjects>
+                        <excludes>
+                            <exclude>**/target/**</exclude>
+                            <exclude>**/target-ide/**</exclude>
+
+                            <exclude>**/*.project</exclude>
+                            <exclude>**/.classpath</exclude>
+                            <exclude>**/.settings/**</exclude>
+                            <exclude>**/*.launch</exclude>
+                            <exclude>**/ide/eclipse/launch/**</exclude>
+                            <exclude>**/ide/intellij/launch/**</exclude>
+                            <exclude>src/site/resources/ide/eclipse/**</exclude>
+
+                            <exclude>**/rebel.xml</exclude>
+                            <exclude>**/*.gitignore</exclude>
+                            <exclude>**/*.log</exclude>
+                            <exclude>**/*.pdn</exclude>
+                            <exclude>**/*.svg</exclude>
+                            <exclude>**/*.json</exclude>
+                            <exclude>**/*.min.js</exclude>
+                            <exclude>**/*.js</exclude>
+
+                            <exclude>**/translations.pot</exclude>
+                            <exclude>**/translations*.po</exclude>
+                        </excludes>
+                        <licenses>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>AL2</licenseFamilyCategory>
+                                <licenseFamilyName>Apache License 2.0</licenseFamilyName>
+                                <notes />
+                                <patterns>
+                                    <pattern>Licensed to the Apache Software Foundation (ASF) under one</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>JQRY</licenseFamilyCategory>
+                                <licenseFamilyName>MIT</licenseFamilyName>
+                                <notes />
+                                <patterns>
+                                    <pattern>Dual licensed under the MIT or GPL Version 2 licenses.</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>JMOCK</licenseFamilyCategory>
+                                <licenseFamilyName>JMock</licenseFamilyName>
+                                <notes />
+                                <patterns>
+                                    <pattern>Copyright (c) 2000-2007, jMock.org</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>DOCBK</licenseFamilyCategory>
+                                <licenseFamilyName>DocBook 4.5</licenseFamilyName>
+                                <notes />
+                                <patterns>
+                                    <pattern>Permission to copy in any form is granted for use</pattern>
+                                    <pattern>Permission to use, copy, modify and distribute the DocBook DTD</pattern>
+                                    <pattern>is hereby granted in perpetuity, provided that the above copyright</pattern>
+                                    <pattern>This is the catalog data file for DocBook XML V4.5. It is provided as</pattern>
+                                    <pattern>XML Catalog data for DocBook XML V4.5</pattern>
+                                    <pattern>DocBook additional general entities V4.5</pattern>
+                                    <pattern>XML EXCHANGE TABLE MODEL DECLARATION MODULE</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>W3C</licenseFamilyCategory>
+                                <licenseFamilyName>XHTML</licenseFamilyName>
+                                <notes />
+                                <patterns>
+                                    <pattern>Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),</pattern>
+                                </patterns>
+                            </license>
+                        </licenses>
+                        <licenseFamilies>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>Apache License 2.0</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>MIT</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>JMock</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>DocBook 4.5</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>XHTML</familyName>
+                            </licenseFamily>
+                        </licenseFamilies>
+                    </configuration>
+                </plugin>
             </plugins>
         </pluginManagement>
         <plugins>

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/.gitignore
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/.gitignore b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/.gitignore
new file mode 100644
index 0000000..3d97345
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/.gitignore
@@ -0,0 +1,8 @@
+/SimpleApp-PROTOTYPE-jrebel.launch
+/SimpleApp-PROTOTYPE-no-fixtures.launch
+/SimpleApp-PROTOTYPE-with-fixtures.launch
+/SimpleApp-SERVER-no-fixtures.launch
+/SimpleApp-PROTOTYPE-jrebel.launch
+/SimpleApp-PROTOTYPE-no-fixtures.launch
+/SimpleApp-PROTOTYPE-with-fixtures.launch
+/SimpleApp-SERVER-no-fixtures.launch

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch
deleted file mode 100644
index 3b1d393..0000000
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch
+++ /dev/null
@@ -1,33 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<?xml version="1.0" encoding="UTF-8"?><launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-    <listEntry value="/isis-core-webserver/src/main/java/org/apache/isis/WebServer.java"/>
-  </listAttribute>
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-    <listEntry value="1"/>
-  </listAttribute>
-  <mapAttribute key="org.eclipse.debug.core.preferred_launchers">
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[debug]"/>
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[run]"/>
-  </mapAttribute>
-  <stringAttribute value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector" key="org.eclipse.debug.core.source_locator_id"/>
-  <stringAttribute value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;isis-jrebel-plugin&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;" key="org.eclipse.debug.core.source_locator_meme
 nto"/>
-  <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-    <listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-  </listAttribute>
-  <booleanAttribute value="true" key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS"/>
-  <listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-    <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
-    <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;simple_wicket_restful_jdo-webapp&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>
-    <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER&quot; path=&quot;3&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
-  </listAttribute>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.classpathProvider" key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER"/>
-  <booleanAttribute value="true" key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH"/>
-  <stringAttribute value="org.apache.isis.WebServer" key="org.eclipse.jdt.launching.MAIN_TYPE"/>
-  <stringAttribute value="--port 8080 --type PROTOTYPE" key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS"/>
-  <stringAttribute value="${rootArtifactId}-webapp" key="org.eclipse.jdt.launching.PROJECT_ATTR"/>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.sourcepathProvider" key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER"/>
-  <stringAttribute value="${jrebel_args} -Drebel.log=false -Drebel.check_class_hash=true -Drebel.packages_exclude=org.apache.isis -Dproject.root=${project_loc}/.. -Dtarget.dir=target-ide -Drebel.plugins=C:/github/danhaywood/isis-jrebel-plugin/target/danhaywood-isis-jrebel-plugin-1.0.0-SNAPSHOT.jar -Disis-jrebel-plugin.packagePrefix=dom.simple,org.apache.isis.objectstore.jdo.applib -Disis-jrebel-plugin.loggingLevel=warn -XX:MaxPermSize=128m" key="org.eclipse.jdt.launching.VM_ARGUMENTS"/>
-</launchConfiguration>

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch
deleted file mode 100644
index 4fd7be2..0000000
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch
+++ /dev/null
@@ -1,25 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<?xml version="1.0" encoding="UTF-8"?><launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-    <listEntry value="/isis-core-webserver/src/main/java/org/apache/isis/WebServer.java"/>
-  </listAttribute>
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-    <listEntry value="1"/>
-  </listAttribute>
-  <mapAttribute key="org.eclipse.debug.core.preferred_launchers">
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[debug]"/>
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[run]"/>
-  </mapAttribute>
-  <stringAttribute value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector" key="org.eclipse.debug.core.source_locator_id"/>
-  <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-    <listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-  </listAttribute>
-  <booleanAttribute value="true" key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS"/>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.classpathProvider" key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER"/>
-  <stringAttribute value="org.apache.isis.WebServer" key="org.eclipse.jdt.launching.MAIN_TYPE"/>
-  <stringAttribute value="--port 8080 --type SERVER_PROTOTYPE" key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS"/>
-  <stringAttribute value="${rootArtifactId}-webapp" key="org.eclipse.jdt.launching.PROJECT_ATTR"/>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.sourcepathProvider" key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER"/>
-</launchConfiguration>

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch
deleted file mode 100644
index 3376620..0000000
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch
+++ /dev/null
@@ -1,22 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<?xml version="1.0" encoding="UTF-8"?><launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-    <listEntry value="/isis-core-webserver/src/main/java/org/apache/isis/WebServer.java"/>
-  </listAttribute>
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-    <listEntry value="1"/>
-  </listAttribute>
-  <mapAttribute key="org.eclipse.debug.core.preferred_launchers">
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[debug]"/>
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[run]"/>
-  </mapAttribute>
-  <stringAttribute value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector" key="org.eclipse.debug.core.source_locator_id"/>
-  <booleanAttribute value="true" key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS"/>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.classpathProvider" key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER"/>
-  <stringAttribute value="org.apache.isis.WebServer" key="org.eclipse.jdt.launching.MAIN_TYPE"/>
-  <stringAttribute value="--port 8080 -D isis.persistor.datanucleus.install-fixtures=true --type SERVER_PROTOTYPE" key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS"/>
-  <stringAttribute value="${rootArtifactId}-webapp" key="org.eclipse.jdt.launching.PROJECT_ATTR"/>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.sourcepathProvider" key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER"/>
-</launchConfiguration>

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch
deleted file mode 100644
index 2e2e0ea..0000000
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch
+++ /dev/null
@@ -1,25 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<?xml version="1.0" encoding="UTF-8"?><launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-    <listEntry value="/isis-core-webserver/src/main/java/org/apache/isis/WebServer.java"/>
-  </listAttribute>
-  <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-    <listEntry value="1"/>
-  </listAttribute>
-  <mapAttribute key="org.eclipse.debug.core.preferred_launchers">
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[debug]"/>
-    <mapEntry value="org.eclipse.jdt.launching.localJavaApplication" key="[run]"/>
-  </mapAttribute>
-  <stringAttribute value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector" key="org.eclipse.debug.core.source_locator_id"/>
-  <listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-    <listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-  </listAttribute>
-  <booleanAttribute value="true" key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS"/>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.classpathProvider" key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER"/>
-  <stringAttribute value="org.apache.isis.WebServer" key="org.eclipse.jdt.launching.MAIN_TYPE"/>
-  <stringAttribute value="--port 8080 --type SERVER" key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS"/>
-  <stringAttribute value="${rootArtifactId}-webapp" key="org.eclipse.jdt.launching.PROJECT_ATTR"/>
-  <stringAttribute value="org.eclipse.m2e.launchconfig.sourcepathProvider" key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER"/>
-</launchConfiguration>

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/lib/.gitignore
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/lib/.gitignore b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/lib/.gitignore
new file mode 100644
index 0000000..70eee7e
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/lib/.gitignore
@@ -0,0 +1,5 @@
+#
+# explicitly ignoring Microsoft JDBC4 jar
+# (cannot redistribute, licensing)
+#
+sqljdbc4.jar

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-en.po
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-en.po b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-en.po
index 47b82d1..2667a64 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-en.po
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-en.po
@@ -2,6 +2,9 @@
 #
 # .pot file
 #
+# generated at: 2015-10-15 23:20:47
+# generated by: TranslationServicePo
+#
 # Translate this file to each required language and place in WEB-INF, eg:
 #
 #     /WEB-INF/translations-en_US.po
@@ -19,187 +22,211 @@
 
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
 msgid ".pot file name"
-msgstr ".pot file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Are you sure?"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Cancel"
+msgstr ""
 
 
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
 msgid "Clear translation cache"
-msgstr "Clear translation cache"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Confirm"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#create()
+#: domainapp.dom.simple.SimpleObjects#create()
 msgid "Create"
-msgstr "Create"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable
 msgid "Discoverable"
-msgstr "Discoverable"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS
 msgid "Domain Objects"
-msgstr "Domain Objects"
+msgstr ""
 
 
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
 msgid "Download Translations"
-msgstr "Download Translations"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Exclamation mark is not allowed"
-msgstr "Exclamation mark is not allowed"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#findByName()
+#: domainapp.dom.simple.SimpleObjects#findByName()
 msgid "Find By Name"
-msgstr "Find By Name"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
 msgid "Fixture script"
-msgstr "Fixture script"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
 msgid "Friendly Name"
-msgstr "Friendly Name"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject
 msgid "General"
-msgstr "General"
+msgstr ""
 
 
-#: domainapp.dom.app.homepage.HomePageService#homePage()
+#: domainapp.app.services.homepage.HomePageService#homePage()
 msgid "Home Page"
-msgstr "Home Page"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#listAll()
+#: domainapp.dom.simple.SimpleObjects#listAll()
 msgid "List All"
-msgstr "List All"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureScript#localName
 msgid "Local Name"
-msgstr "Local Name"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureScript#lookup()
 #: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
 msgid "Lookup"
-msgstr "Lookup"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#name
-#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
-#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
+
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
 msgid "Name"
-msgstr "Name"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
 msgid "New name"
-msgstr "New name"
+msgstr ""
 
 
 #: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
 msgid "Object"
-msgstr "Object"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#title()
+#: domainapp.dom.simple.SimpleObject#title()
 msgid "Object: {name}"
-msgstr "Object: {name}"
+msgstr ""
 
 
-#: domainapp.dom.app.homepage.HomePageViewModel#objects
+#: domainapp.app.services.homepage.HomePageViewModel#objects
 msgid "Objects"
-msgstr "Objects"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixtures.FixtureType#OTHER
 msgid "Other"
-msgstr "Other"
+msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Parameters"
-msgstr "Parameters"
+msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
 msgid "Prototyping"
-msgstr "Prototyping"
+msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
 msgid "Recreate Objects And Return First"
-msgstr "Recreate Objects And Return First"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureResult#object
 msgid "Result"
-msgstr "Result"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureResult#className
 msgid "Result class"
-msgstr "Result class"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureResult#key
 msgid "Result key"
-msgstr "Result key"
+msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
 msgid "Run Fixture Script"
-msgstr "Run Fixture Script"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureScript
 msgid "Script"
-msgstr "Script"
+msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
-msgstr "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#title()
+#: domainapp.dom.simple.SimpleObjects#title()
 msgid "Simple Objects"
-msgstr "Simple Objects"
+msgstr ""
 
 
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
 msgid "Switch To Reading Translations"
-msgstr "Switch To Reading Translations"
+msgstr ""
 
 
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
 msgid "Switch To Writing Translations"
-msgstr "Switch To Writing Translations"
+msgstr ""
 
 
 #: org.apache.isis.applib.fixturescripts.FixtureScript#type
 msgid "Type"
-msgstr "Type"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Update Name"
-msgstr "Update Name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#versionSequence
+msgid "Version Sequence"
+msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject
 msgid "name"
 msgstr ""
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
index 8b4c2d7..589082c 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-es.po
@@ -2,6 +2,9 @@
 #
 # .pot file
 #
+# generated at: 2015-10-15 23:20:47
+# generated by: TranslationServicePo
+#
 # Translate this file to each required language and place in WEB-INF, eg:
 #
 #     /WEB-INF/translations-en_US.po
@@ -22,12 +25,27 @@ msgid ".pot file name"
 msgstr "fichero .pot"
 
 
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Are you sure?"
+msgstr "¿Estas seguro?"
+
+
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Cancel"
+msgstr "Cancelar"
+
+
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
 msgid "Clear translation cache"
 msgstr "Limpiar la caché de traducciones"
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#create()
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Confirm"
+msgstr "Confirmar"
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
 msgid "Create"
 msgstr "Crear"
 
@@ -47,12 +65,12 @@ msgid "Download Translations"
 msgstr "Descargar traducciones"
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Exclamation mark is not allowed"
 msgstr "No se admite el signo de exclamación"
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#findByName()
+#: domainapp.dom.simple.SimpleObjects#findByName()
 msgid "Find By Name"
 msgstr "Buscar por Nombre"
 
@@ -67,12 +85,17 @@ msgid "Friendly Name"
 msgstr "Nombre común"
 
 
-#: domainapp.dom.app.homepage.HomePageService#homePage()
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
 msgid "Home Page"
 msgstr "Página de Inicio"
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#listAll()
+#: domainapp.dom.simple.SimpleObjects#listAll()
 msgid "List All"
 msgstr "Listar Todos"
 
@@ -88,14 +111,15 @@ msgid "Lookup"
 msgstr "Buscar"
 
 
-#: domainapp.dom.modules.simple.SimpleObject#name
-#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
-#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
+
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
 msgid "Name"
 msgstr "Nombre"
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
 msgid "New name"
 msgstr "Nuevo nombre"
 
@@ -105,12 +129,12 @@ msgid "Object"
 msgstr "Objeto"
 
 
-#: domainapp.dom.modules.simple.SimpleObject#title()
+#: domainapp.dom.simple.SimpleObject#title()
 msgid "Object: {name}"
 msgstr "Objeto: {name}"
 
 
-#: domainapp.dom.app.homepage.HomePageViewModel#objects
+#: domainapp.app.services.homepage.HomePageViewModel#objects
 msgid "Objects"
 msgstr "Objetos"
 
@@ -120,19 +144,20 @@ msgid "Other"
 msgstr "Other"
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Parameters"
 msgstr "Parámetros"
 
 
-#: domainapp.fixture.DomainAppFixturesService
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
 msgid "Prototyping"
 msgstr "Prototipo"
 
 
-#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
 msgid "Recreate Objects And Return First"
 msgstr "Recrear Objetos y Devolver el Primero"
 
@@ -152,8 +177,9 @@ msgid "Result key"
 msgstr "Clave del Resultado"
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
 msgid "Run Fixture Script"
 msgstr "Ejecutar Script de Instalación"
 
@@ -163,13 +189,14 @@ msgid "Script"
 msgstr "Script"
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
 msgstr "Parámetros específicos del Script (si hay alguno). El formato depende de la implementación del script (por ejemplo, clave=valor, CSV, JSON, XML, etc.)"
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#title()
+#: domainapp.dom.simple.SimpleObjects#title()
 msgid "Simple Objects"
 msgstr "Objetos básicos"
 
@@ -189,12 +216,16 @@ msgid "Type"
 msgstr "Tipo"
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Update Name"
 msgstr "Nombre de la Actualización"
 
+#: domainapp.dom.simple.SimpleObject#versionSequence
+msgid "Version Sequence"
+msgstr ""
+
 
-#: domainapp.dom.modules.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject
 msgid "name"
 msgstr ""
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-nl.po
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-nl.po b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-nl.po
index 4e35a22..6a7e4e9 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-nl.po
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations-nl.po
@@ -2,6 +2,9 @@
 #
 # .pot file
 #
+# generated at: 2015-10-15 23:20:47
+# generated by: TranslationServicePo
+#
 # Translate this file to each required language and place in WEB-INF, eg:
 #
 #     /WEB-INF/translations-en_US.po
@@ -22,12 +25,27 @@ msgid ".pot file name"
 msgstr ""
 
 
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Are you sure?"
+msgstr "Weet je het zeker?"
+
+
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Cancel"
+msgstr "Annuleer"
+
+
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
 msgid "Clear translation cache"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#create()
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Confirm"
+msgstr "Bevestigen"
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
 msgid "Create"
 msgstr "Creëren"
 
@@ -47,12 +65,12 @@ msgid "Download Translations"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Exclamation mark is not allowed"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#findByName()
+#: domainapp.dom.simple.SimpleObjects#findByName()
 msgid "Find By Name"
 msgstr "Zoek op Naam"
 
@@ -67,12 +85,17 @@ msgid "Friendly Name"
 msgstr ""
 
 
-#: domainapp.dom.app.homepage.HomePageService#homePage()
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
 msgid "Home Page"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#listAll()
+#: domainapp.dom.simple.SimpleObjects#listAll()
 msgid "List All"
 msgstr "Lijst Alle"
 
@@ -88,14 +111,15 @@ msgid "Lookup"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#name
-#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
-#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
+
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
 msgid "Name"
 msgstr "Naam"
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
 msgid "New name"
 msgstr "Nieuwe naam"
 
@@ -105,12 +129,12 @@ msgid "Object"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#title()
+#: domainapp.dom.simple.SimpleObject#title()
 msgid "Object: {name}"
 msgstr ""
 
 
-#: domainapp.dom.app.homepage.HomePageViewModel#objects
+#: domainapp.app.services.homepage.HomePageViewModel#objects
 msgid "Objects"
 msgstr "Objects"
 
@@ -120,19 +144,20 @@ msgid "Other"
 msgstr "Other"
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Parameters"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
 msgid "Prototyping"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
 msgid "Recreate Objects And Return First"
 msgstr ""
 
@@ -152,8 +177,9 @@ msgid "Result key"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
 msgid "Run Fixture Script"
 msgstr ""
 
@@ -163,13 +189,14 @@ msgid "Script"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#title()
+#: domainapp.dom.simple.SimpleObjects#title()
 msgid "Simple Objects"
 msgstr "Eenvoudige Objecten"
 
@@ -189,12 +216,17 @@ msgid "Type"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Update Name"
 msgstr "Updaten Naam"
 
 
-#: domainapp.dom.modules.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#versionSequence
+msgid "Version Sequence"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
 msgid "name"
 msgstr ""
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations.po
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations.po b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations.po
index 3644a28..e050de7 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations.po
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/translations.po
@@ -2,6 +2,9 @@
 #
 # .pot file
 #
+# generated at: 2015-10-15 23:20:47
+# generated by: TranslationServicePo
+#
 # Translate this file to each required language and place in WEB-INF, eg:
 #
 #     /WEB-INF/translations-en_US.po
@@ -22,12 +25,27 @@ msgid ".pot file name"
 msgstr ""
 
 
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Are you sure?"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Cancel"
+msgstr ""
+
+
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
 msgid "Clear translation cache"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#create()
+#: org.apache.isis.core.runtime.system.IsisSystem
+msgid "Confirm"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
 msgid "Create"
 msgstr ""
 
@@ -47,12 +65,12 @@ msgid "Download Translations"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Exclamation mark is not allowed"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#findByName()
+#: domainapp.dom.simple.SimpleObjects#findByName()
 msgid "Find By Name"
 msgstr ""
 
@@ -67,17 +85,17 @@ msgid "Friendly Name"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject
 msgid "General"
-msgstr "Common"
+msgstr ""
 
 
-#: domainapp.dom.app.homepage.HomePageService#homePage()
+#: domainapp.app.services.homepage.HomePageService#homePage()
 msgid "Home Page"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#listAll()
+#: domainapp.dom.simple.SimpleObjects#listAll()
 msgid "List All"
 msgstr ""
 
@@ -93,14 +111,19 @@ msgid "Lookup"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#name
-#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String)
-#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String)
+#: org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault#mixin()
+msgid "Mixin"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
 msgid "Name"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
 msgid "New name"
 msgstr ""
 
@@ -110,12 +133,12 @@ msgid "Object"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#title()
+#: domainapp.dom.simple.SimpleObject#title()
 msgid "Object: {name}"
 msgstr ""
 
 
-#: domainapp.dom.app.homepage.HomePageViewModel#objects
+#: domainapp.app.services.homepage.HomePageViewModel#objects
 msgid "Objects"
 msgstr ""
 
@@ -125,19 +148,20 @@ msgid "Other"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Parameters"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
 #: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
 msgid "Prototyping"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
 msgid "Recreate Objects And Return First"
 msgstr ""
 
@@ -157,8 +181,9 @@ msgid "Result key"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript()
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
 msgid "Run Fixture Script"
 msgstr ""
 
@@ -168,13 +193,14 @@ msgid "Script"
 msgstr ""
 
 
-#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 #: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
 msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObjects#title()
+#: domainapp.dom.simple.SimpleObjects#title()
 msgid "Simple Objects"
 msgstr ""
 
@@ -194,12 +220,17 @@ msgid "Type"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject#updateName()
+#: domainapp.dom.simple.SimpleObject#updateName()
 msgid "Update Name"
 msgstr ""
 
 
-#: domainapp.dom.modules.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#versionSequence
+msgid "Version Sequence"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
 msgid "name"
 msgstr ""
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d80a3f46/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index 783d295..a043204 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Fri Oct 09 17:34:13 BST 2015
+#Mon Nov 02 18:16:24 GMT 2015
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it


[08/12] isis git commit: ISIS-1195: more on introductory sections

Posted by da...@apache.org.
ISIS-1195: more on introductory sections


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/2498f828
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/2498f828
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/2498f828

Branch: refs/heads/master
Commit: 2498f8284c58a797b193f8b4d7dc9357450b8583
Parents: 1dad19b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 15:14:16 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 15:14:16 2015 +0000

----------------------------------------------------------------------
 .../_ug_core-concepts_building-blocks.adoc      | 98 ++++++++++++++++----
 ...oncepts_philosophy_domain-driven-design.adoc |  2 +-
 ..._core-concepts_philosophy_how-eases-ddd.adoc |  6 +-
 ...ncepts_philosophy_naked-objects-pattern.adoc |  2 +-
 4 files changed, 87 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/2498f828/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
index 3c6589d..d7c95d0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
@@ -43,12 +43,12 @@ sources.
 [[_ug_core-concepts_building-blocks_types-of-domain-objects]]
 ## Type of Domain Objects
 
-Most domain objects that the end-user interacts with are domain entities, such as `Customer`, `Order`, `Product` and
+Most domain objects that the end-user interacts with are *domain entities*, such as `Customer`, `Order`, `Product` and
 so on.  These are persistent objects and which are mapped to a database (usually relational), using JDO/DataNucleus
 annotations.  From the end-user's perspective the UI displays a single domain object per page; they can then inspect
 and modify its state, and navigate to related objects.
 
-The next type of domain object to discuss is domain services.  These are (usually) singleton stateless services
+The next type of domain object to discuss is *domain services*.  These are (usually) singleton stateless services
 that provide additional functionality.  The behaviour of these services is rendered in various ways, though the most
 obvious is as the menu actions on the top-level menu bars in the xref:ug.adoc#_ug_wicket-viewer[Wicket viewer]'s UI.
 
@@ -58,26 +58,28 @@ significant: it allows business logic to be implemented in the domain entities,
 supporting service layers.  Said another way: it is the means by which Apache Isis helps you avoid the anaemic
 domain model anti-pattern.
 
-As well as domain entities - mapped to a datastore - Apache Isis also supports view models.  End users interact with
+As well as domain entities - mapped to a datastore - Apache Isis also supports *view models*.  End users interact with
 view models in the same way as a domain entity, indeed they are unlikely to distinguish one from the other.  However
 view models are _not_ mapped to the underlying database, rather they represent some aggregation of state from one or
 more underlying entities.  Their state is serialized and recreated from their internal identifier; this identifier is
 visible as the object's URL in the xref:ug.adoc#_ug_wicket-viewer[Wicket viewer] or
 xref:ug.adoc#_ug_restfulobjects-viewer[RestfulObjects viewer].
 
-There's no need though for the view model to aggregate the state of regular domain entities.  A view model could also be used as a proxy for some externally managed entity, accessed over a web service or REST API; it could even be a representation
- of state held in-memory (such as user preferences, for example).
+There's no need though for the view model to aggregate the state of regular domain entities.  A view model could also
+be used as a proxy for some externally managed entity, accessed over a web service or REST API; it could even be a
+representation of state held in-memory (such as user preferences, for example).
 
 There are also several types of domain services.  Most easily described are those domain services (discussed above)
-that are represented as the menu actions on top-level menu bars.  Another variation are domain services that contribute
-behaviour or (derived) state to entities/view models.  Finally domain services may also simply provide additional non-UI
-functionality; an example being to perform an address geocoding lookup against the google-maps API.
+that are represented as the menu actions on top-level menu bars.  Another variation are *contributed services* - domain
+services that contribute behaviour or (derived) state to entities/view models.  Finally domain services may also
+simply provide additional non-UI functionality; an example being to perform an address geocoding lookup against the
+google-maps API.
 
 Also worth mentioning: domain services can also be either singletons (discussed above) or request-scoped; the latter
 being annotated with `@javax.enterprise.context.RequestScoped`.  An example of the request-scoped service is the
 xref:rg.adoc#_rg_services-api_manpage-Scratchpad[`Scratchpad`] service, for sharing arbitrary data between multiple objects.
 
-The final type of domain object is mixins.  These are similar to contributed services in that they also contribute (or rather,
+The final type of domain object is the *mixin*.  These are similar to contributed services in that they also contribute (or rather,
 mixin) both behaviour or (derived) state to entities/view models.  However, they provide a more control over contributed services,
 with a cleaner programming model similar to traits found in other languages.
 
@@ -86,18 +88,58 @@ The diagram below summarizes the various types of domain object:
 image::{_imagesdir}core-concepts/building-blocks/types-of-domain-object.png[width="860px",link="{_imagesdir}core-concepts/building-blocks/types-of-domain-object.png"]
 
 
-The Apache Isis programming model offers some equivalent ways
+The Apache Isis programming model uses annotations to distinguish these object types:
 
+* *view models* are annotated either with `@DomainObject(nature=VIEW_MODEL)` or using `@ViewModel`.  Which is used is
+a matter of personal preference.  +
++
+It is also possible to implement the `ViewModel` interface, for finer-grained control.
+
+* *domain entities* that are persisted to the database (as the vast majority will) are annotated with
+`@DomainObject(nature=ENTITY)`. In addition such domain entities are annotated with the JDO/DataNucleus annotation of
+`@javax.jdo.annotations.PersistenceCapable`. +
++
+In addition, if a domain entity is a proxy for state managed in an external system, or merely for some state held
+in-memory, then `@DomainObject(nature=EXTERNAL_ENTITY)` or `@DomainObject(nature=INMEMORY_ENTITY)` can be used.
+
+* *mixins* are annotated either with `@DomainObject(nature=MIXIN)` or using `@Mixin`.  As for view models, which is
+used is a matter of personal preference.
+
+* finally, *domain services*` are annotated with `@DomainService(nature=...)` where the nature is either
+`VIEW_MENU_ONLY` (for domain services whose actions appear on the top-level menu bars), or `VIEW_CONTRIBUTIONS_ONLY`
+(for domain services whose actions are contributed to entities or view models), or `DOMAIN` (for domain services whose
+functionality is simply for other domain objects to invoke programmatically).
++
+It is also possible to specify a nature of simply `VIEW`, this combining `VIEW_MENU_ONLY` and `VIEW_CONTRIBUTIONS_ONLY`.
+This is in fact the default, useful for initial prototyping.  A final nature is `VIEW_REST_ONLY` which is for domain
+services whose functionality is surfaced only by the xref:ug.adoc#_ug_restfulobjects-viewer[RestfulObjects viewer].
+
+Worth emphasising is that domain entities and view models hold state, whereas domain services are generally
+stateless.  If a domain service does hold state (eg the `Scratchpad` service noted above) then it should be
+`@RequestScoped` so that this state is short-lived and usable only within a single request.
 
-... todo
 
 
 [[_ug_core-concepts_building-blocks_objects-members]]
-## Object Members
+== Object Members
 
-Every domain object in Apache Isis consists of these three types of members: properties, collections and actions.  Some (eg domain services and mixins) only contain
+Every domain object in Apache Isis consists of (at most) three types of members:
 
-NOTE: TODO
+* properties, such as a `Customer`'s `firstName
+
+* collections, such as a `Customer`'s `orders` collection of ``Order``s
+
+* actions, such as a `Customer'`s `placeOrder(...)` method.
+
+Some domain objects - specifically domain services and mixins - only have actions.  In the case of contributing services
+and mixins these actions can (depending upon their semantics and signatures) be represented as derived properties or
+collections on the entity/view model to which they contribute/mix-in.
+
+
+=== Properties
+
+Properties follow the standard getter/setter pattern, with the return type being a scalar (a value object or another
+entity or view model).
 
 For example, with:
 
@@ -113,7 +155,12 @@ public class Customer
 
 the framework infers the `Customer` domain entity, which in turn has a `firstName` string _property_.
 
-Similarly, from:
+
+=== Collections
+
+Collections are also represented by a getter and setter, however the return type is a `Collection` or subtype.
+
+For example, with:
 
 [source,java]
 ----
@@ -127,7 +174,20 @@ public class Customer
 
 the framework infers the `orders` _collection_.
 
-Finally:
+[TIP]
+====
+The most commonly used collection type is `java.util.SortedSet`; entities are most commonly mapped to a relational
+database (ie a datastore with set semantics) and we recommend that all entities define a natural ordering so that when
+rendered in the UI they will be ordered "meaningfully" to the end-user.
+====
+
+
+=== Actions
+
+The third type of object member is actions.  (To a first approximation), actions are all public methods that do not
+represent properties or collections.
+
+For example:
 
 [source,java]
 ----
@@ -139,6 +199,12 @@ public class Customer
 
 corresponds to the `placeOrder` _action_.
 
+[NOTE]
+====
+The above _is_ a simplification; the Apache Isis programming model also recognizes a number of other supporting methods
+each of which has its own prefix such as `hide`, `disable` or `validate`.  These can be considered as "reserved words"
+in Apache Isis, and do _not_ correspond to actions even though they have public visibility.
+====
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/2498f828/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
index c1cd8c3..c2c0146 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
@@ -56,7 +56,7 @@ Of the various methodologies that the IT industry has tried, many advocate the p
 
 Bah and humbug! If we use our  ubiquitous language just to build up a high-level analysis model, then we will re-create the communication divide. The domain experts and business analysts will look only to the analysis model, and the developers will look only to the implementation model. Unless the mapping between the two is completely mechanical, inevitably the two will diverge.
 
-What do we mean by  *model* anyway? For some, the term will bring to mind  _UML_ class or sequence diagrams and the like. But this isn't a model; it's a visual  *representation* of some aspect of a model. No, a domain model is a group of related concepts, identifying them, naming them, and defining how they relate. What is in the model depends on what our objective is. We're not looking to simply model everything that's out there in the real world. Instead, we want to take a relevant abstraction or simplification of it and then make it do something useful for us.  A model is neither right nor wrong, just more or less useful.
+What do we mean by  *model* anyway? For some, the term will bring to mind  UML class or sequence diagrams and the like. But this isn't a model; it's a visual  *representation* of some aspect of a model. No, a domain model is a group of related concepts, identifying them, naming them, and defining how they relate. What is in the model depends on what our objective is. We're not looking to simply model everything that's out there in the real world. Instead, we want to take a relevant abstraction or simplification of it and then make it do something useful for us.  A model is neither right nor wrong, just more or less useful.
 
 For our  ubiquitous language to have value, the domain model that encodes it must have a straightforward, literal representation to the design of the software, specifically to the implementation. Our software's design should be driven by this model; we should have a model-driven design.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/2498f828/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_how-eases-ddd.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_how-eases-ddd.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_how-eases-ddd.adoc
index 29f342b..d2bba65 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_how-eases-ddd.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_how-eases-ddd.adoc
@@ -34,11 +34,11 @@ In Apache Isis, we have a very pure one-to-one correspondence between the domain
 
 
 
-== Abstract models are difficult to represent
+== Model must be understandable
 
 If we are using code as the primary means of expressing the model, then we need to find a way to make this model understandable to the business.
 
-We could generate  _UML_ diagrams and the like from code. That will work for some members of the business community, but not for everyone. Or we could generate a  _PDF_ document from Javadoc comments, but comments aren't code and so the document may be inaccurate.  Anyway, even if we do create such a document, not everyone will read it.
+We could generate UML diagrams and the like from code. That will work for some members of the business community, but not for everyone. Or we could generate a PDF document from Javadoc comments, but comments aren't code and so the document may be inaccurate.  Anyway, even if we do create such a document, not everyone will read it.
 
 A better way to represent the model is to show it in action as a working prototype. As we show in the xref:ug.adoc#_ug_getting-started[Getting Started] section, Apache Isis enables this with ease. Such prototypes bring the domain model to life, engaging the audience in a way that a piece of paper never can.
 
@@ -47,7 +47,7 @@ Moreover, with Apache Isis prototypes, the domain model will come shining throug
 
 
 
-== Layered architectures are easily compromised
+== Architecture must be robust
 
 _DDD_ rightly requires that the domain model lives in its own layer within the architecture. The other layers of the application (usually presentation, application, and persistence) have their own responsibilities, and are completely separate.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/2498f828/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_naked-objects-pattern.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_naked-objects-pattern.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_naked-objects-pattern.adoc
index ba56bdd..70d6690 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_naked-objects-pattern.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_naked-objects-pattern.adoc
@@ -9,7 +9,7 @@ Apache Isis implements the naked objects pattern, originally formulated by Richa
 pass:[<div class="extended-quote-first"><p>]The Naked Objects pattern arose, at least in part, from my own frustration at the lack of success of the domain-driven approach. Good examples were hard to find--as they are still.
 pass:[</p></div>]
 
-pass:[<div class="extended-quote"><p>]A common complaint from _DDD_ practitioners was that it was hard to gain enough commitment from business stakeholders, or even to engage them at all. My own experience suggested that it was nearly impossible to engage business managers with _UML_ diagrams.  It was much easier to engage them in rapid prototyping -- where they could see and interact with the results -- but most forms of rapid prototyping concentrate on the presentation layer, often at the expense of the underlying model and certainly at the expense of abstract thinking.
+pass:[<div class="extended-quote"><p>]A common complaint from _DDD_ practitioners was that it was hard to gain enough commitment from business stakeholders, or even to engage them at all. My own experience suggested that it was nearly impossible to engage business managers with UML diagrams.  It was much easier to engage them in rapid prototyping -- where they could see and interact with the results -- but most forms of rapid prototyping concentrate on the presentation layer, often at the expense of the underlying model and certainly at the expense of abstract thinking.
 pass:[</p></div>]
 
 pass:[<div class="extended-quote"><p>]Even if you could engage the business sponsors sufficiently to design a domain model, by the time you'd finished developing the system on top of the domain model, most of its benefits had disappeared. It's all very well creating an agile domain object model, but if any change to that model also dictates the modification of one or more layers underneath it (dealing with persistence) and multiple layers on top (dealing with presentation), then that agility is practically worthless.


[10/12] isis git commit: ISIS-830: improved error message for if register 'late'.

Posted by da...@apache.org.
ISIS-830: improved error message for if register 'late'.

We throw the IllegalStateException if any events have been posted.

Also:
- added unit tests around this functionality


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c5eaf8b2
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c5eaf8b2
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c5eaf8b2

Branch: refs/heads/master
Commit: c5eaf8b2b8442b45b0aaadf5d991338e719780ac
Parents: a751983
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 18:11:58 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 18:11:58 2015 +0000

----------------------------------------------------------------------
 .../services/eventbus/EventBusService.java      |  8 +-
 .../eventbus/EventBusServiceDefault.java        |  6 +-
 .../eventbus/EventBusServiceDefaultTest.java    | 88 +++++++++++++++++++-
 3 files changed, 95 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c5eaf8b2/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java
index 37b049d..ef84d36 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/eventbus/EventBusService.java
@@ -163,6 +163,7 @@ public abstract class EventBusService {
         }
     }
 
+
     /**
      * Notionally allows subscribers to unregister from the event bus; however this is a no-op.
      *
@@ -207,13 +208,18 @@ public abstract class EventBusService {
         getEventBusImplementation().post(event);
     }
 
+
+    protected boolean hasPosted() {
+        return this.eventBusImplementation != null;
+    }
+
     //endregion
 
 
     //region > getEventBus
 
     /**
-     * Lazily populated in {@link #getEventBusImplementation()}.
+     * Lazily populated in {@link #getEventBusImplementation()} as result of the first {@link #post(Object)}.
      */
     protected EventBusImplementation eventBusImplementation;
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c5eaf8b2/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
index 296d758..71ca9c7 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
@@ -61,14 +61,14 @@ public abstract class EventBusServiceDefault extends EventBusService {
                 throw new IllegalArgumentException("Request-scoped services must register their proxy, not themselves");
             }
             // a singleton
-            if (!allowLateRegistration && this.eventBusImplementation != null) {
+            if (!allowLateRegistration && hasPosted()) {
                 // ... coming too late to the party.
-                throw new IllegalStateException("Event bus has already been created; too late to register any further (singleton) subscribers");
+                throw new IllegalStateException("Events have already been posted; too late to register any further (singleton) subscribers");
             }
         }
         super.register(domainService);
     }
-    
+
     //endregion
 
     //region > init, shutdown

http://git-wip-us.apache.org/repos/asf/isis/blob/c5eaf8b2/core/runtime/src/test/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefaultTest.java
index 3bb8287..1943f86 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefaultTest.java
@@ -19,11 +19,15 @@ package org.apache.isis.core.runtime.services.eventbus;
 import java.util.Collections;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.common.eventbus.Subscribe;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 
 import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
 import static org.junit.Assert.assertThat;
 
 public class EventBusServiceDefaultTest {
@@ -32,7 +36,8 @@ public class EventBusServiceDefaultTest {
 
     @Before
     public void setUp() throws Exception {
-        eventBusService = new EventBusServiceDefault(){};
+        eventBusService = new EventBusServiceDefault() {
+        };
     }
 
     public static class Init extends EventBusServiceDefaultTest {
@@ -75,7 +80,6 @@ public class EventBusServiceDefaultTest {
             assertThat(eventBusService.isAllowLateRegistration(), is(false));
         }
 
-
         @Test
         public void implementation_setToGuava() throws Exception {
             eventBusService.init(ImmutableMap.of(EventBusServiceDefault.KEY_EVENT_BUS_IMPLEMENTATION, "guava"));
@@ -108,10 +112,88 @@ public class EventBusServiceDefaultTest {
 
         @Test
         public void implementation_setToAnythingElse() throws Exception {
-            eventBusService.init(ImmutableMap.of(EventBusServiceDefault.KEY_EVENT_BUS_IMPLEMENTATION, "com.mycompany.my.event.bus.Implementation"));
+            eventBusService.init(ImmutableMap.of(EventBusServiceDefault.KEY_EVENT_BUS_IMPLEMENTATION,
+                    "com.mycompany.my.event.bus.Implementation"));
             assertThat(eventBusService.getImplementation(), is("com.mycompany.my.event.bus.Implementation"));
         }
 
     }
 
+    public static class Post extends EventBusServiceDefaultTest {
+
+        public static class Subscriber {
+            Object obj;
+            @Subscribe
+            public void on(Object obj) {
+                this.obj = obj;
+            }
+        }
+
+        @Rule
+        public ExpectedException expectedException = ExpectedException.none();
+
+        Subscriber subscriber;
+
+        @Before
+        public void setUp() throws Exception {
+            super.setUp();
+            subscriber = new Subscriber();
+        }
+
+        @Test
+        public void allow_late_registration_means_can_register_after_post() throws Exception {
+            // given
+            eventBusService.init(ImmutableMap.of(
+                    EventBusServiceDefault.KEY_ALLOW_LATE_REGISTRATION, "true",
+                    EventBusServiceDefault.KEY_EVENT_BUS_IMPLEMENTATION, "guava"));
+            assertThat(eventBusService.isAllowLateRegistration(), is(true));
+            assertThat(eventBusService.getImplementation(), is("guava"));
+
+            eventBusService.post(new Object());
+
+            // when
+            eventBusService.register(subscriber);
+
+            // then
+            assertThat(subscriber.obj, is(nullValue()));
+        }
+
+        @Test
+        public void disallow_late_registration_means_cannot_register_after_post() throws Exception {
+            // given
+            eventBusService.init(ImmutableMap.of(
+                    EventBusServiceDefault.KEY_ALLOW_LATE_REGISTRATION, "false",
+                    EventBusServiceDefault.KEY_EVENT_BUS_IMPLEMENTATION, "guava"));
+            assertThat(eventBusService.isAllowLateRegistration(), is(false));
+            assertThat(eventBusService.getImplementation(), is("guava"));
+
+            eventBusService.post(new Object());
+
+            // expect
+            expectedException.expect(IllegalStateException.class);
+
+            // when
+            eventBusService.register(new Subscriber());
+        }
+
+        @Test
+        public void disallow_late_registration_means_can_register_before_post() throws Exception {
+            // given
+            eventBusService.init(ImmutableMap.of(
+                    EventBusServiceDefault.KEY_ALLOW_LATE_REGISTRATION, "false",
+                    EventBusServiceDefault.KEY_EVENT_BUS_IMPLEMENTATION, "guava"));
+            assertThat(eventBusService.isAllowLateRegistration(), is(false));
+            assertThat(eventBusService.getImplementation(), is("guava"));
+
+            eventBusService.register(subscriber);
+
+            // when
+            final Object event = new Object();
+            eventBusService.post(event);
+
+            // then
+            assertThat(subscriber.obj, is(event));
+        }
+
+    }
 }
\ No newline at end of file


[02/12] isis git commit: ISIS-1195: updating pom.xml for rat check.

Posted by da...@apache.org.
ISIS-1195: updating pom.xml for rat check.

Also: minor edits to release docs


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/426ef81b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/426ef81b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/426ef81b

Branch: refs/heads/master
Commit: 426ef81b2db2c189494c03a3905473766bd6ba72
Parents: b36b923
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Oct 26 10:55:53 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Oct 26 10:55:53 2015 +0000

----------------------------------------------------------------------
 .../main/asciidoc/guides/_cg_committers_cutting-a-release.adoc  | 4 ++--
 core/pom.xml                                                    | 5 +----
 2 files changed, 3 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/426ef81b/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc b/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
index 3e76549..774a2e7 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_cg_committers_cutting-a-release.adoc
@@ -217,7 +217,7 @@ Commit any changes from the preceding steps:
 
 [source,bash]
 ----
-git commit -am "ISIS-nnnn: updates to pom.xml etc for release"
+git commit -am "$ISISJIRA: updates to pom.xml etc for release"
 ----
 
 
@@ -482,7 +482,7 @@ Then, run the script:
 
 [source,bash]
 ----
-sh ../../../scripts/recreate-archetype.sh ISIS-nnnn
+sh ../../../scripts/recreate-archetype.sh $ISISJIRA
 ----
 
 The script automatically commits changes; if you wish use `git log` and

http://git-wip-us.apache.org/repos/asf/isis/blob/426ef81b/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 33d03a0..9548411 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -444,7 +444,6 @@
                             <exclude>**/MANIFEST.MF</exclude>
                             <exclude>**/*.ucd</exclude>
                             <exclude>**/*.ucls</exclude>
-                            <exclude>**/*.iml</exclude>
 
                             <exclude>**/xml/objects/**</exclude>
                             <exclude>**/test.data</exclude>
@@ -453,9 +452,7 @@
                             <exclude>**/jquery.zclip.js</exclude>
                             <exclude>**/bootstrap-growl.js</exclude>
                             <exclude>**/moment.js</exclude>
-                            
-                            <exclude>**/wicket-xhtml1.4-strict.dtd</exclude>
-                            
+
                             <exclude>**/bootstrap-datetimepicker.min.css</exclude>
                             <exclude>**/bootstrap-datetimepicker.css</exclude>
                             <exclude>**/select2-bootstrap.css</exclude>


[03/12] isis git commit: ISIS-1020: bumping to wicketstuff-select2 3.5.2

Posted by da...@apache.org.
ISIS-1020: bumping to wicketstuff-select2 3.5.2


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e654f934
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e654f934
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e654f934

Branch: refs/heads/master
Commit: e654f934ecb6cc123986200fc601d75294ef66ec
Parents: 426ef81
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 13:17:35 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 13:24:10 2015 +0000

----------------------------------------------------------------------
 core/pom.xml                                    | 11 +--
 .../wicket/viewer/IsisWicketApplication.java    |  2 +-
 .../model/models/ScalarModelWithPending.java    |  2 +-
 core/viewer-wicket-ui/pom.xml                   |  4 +-
 .../reference/EntityLinkSelect2Panel.java       |  6 +-
 .../scalars/reference/ReferencePanel.java       |  6 +-
 .../ObjectAdapterMementoProviderAbstract.java   |  4 +-
 .../widgets/breadcrumbs/BreadcrumbPanel.java    | 70 ++++++++++----------
 .../select2/Select2BootstrapCssReference.java   |  5 +-
 .../widgets/select2/Select2ChoiceUtil.java      | 29 +++++++-
 .../valuechoices/ValueChoicesSelect2Panel.java  |  7 +-
 11 files changed, 84 insertions(+), 62 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 9548411..c7c2f0c 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -129,9 +129,9 @@
         <wicket-bootstrap.version>0.9.12</wicket-bootstrap.version>
         <wicket-source.version>6.0.0.8</wicket-source.version>
 
-        <wicket-select2.version>2.2.3</wicket-select2.version>
-        <select2.version>3.5.1</select2.version>
-        <jquery-ui.version>1.10.4</jquery-ui.version>
+        <wicket-select2.version>6.20.0</wicket-select2.version>
+        <select2.version>3.5.2</select2.version>
+        <jquery-ui.version>1.11.4</jquery-ui.version>
 
         <guice.version>3.0</guice.version>
         <picocontainer.version>2.14.3</picocontainer.version>
@@ -1580,8 +1580,9 @@ ${license.additional-notes}
 
             <!-- Wicket-Select2 -->
             <dependency>
-                <groupId>com.vaynberg.wicket.select2</groupId>
-                <artifactId>wicket-select2</artifactId>
+
+                <groupId>org.wicketstuff</groupId>
+                <artifactId>wicketstuff-select2</artifactId>
                 <version>${wicket-select2.version}</version>
                 <exclusions>
                     <exclusion>

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 0250ba7..192851f 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -35,7 +35,7 @@ import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 import com.google.inject.Module;
-import com.vaynberg.wicket.select2.ApplicationSettings;
+import org.wicketstuff.select2.ApplicationSettings;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.ConverterLocator;

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java
index d153f08..fab9761 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChec
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 
 /**
- * For widgets that use a <tt>com.vaynberg.wicket.select2.Select2Choice</tt>; 
+ * For widgets that use a <tt>org.wicketstuff.select2.Select2Choice</tt>;
  * synchronizes the {@link Model} of the <tt>Select2Choice</tt>  
  * with the parent {@link ScalarModel}, allowing also for pending values.
  */

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/pom.xml b/core/viewer-wicket-ui/pom.xml
index 826dd87..50081b4 100644
--- a/core/viewer-wicket-ui/pom.xml
+++ b/core/viewer-wicket-ui/pom.xml
@@ -89,8 +89,8 @@
 			<artifactId>wicket-guice</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>com.vaynberg.wicket.select2</groupId>
-			<artifactId>wicket-select2</artifactId>
+			<groupId>org.wicketstuff</groupId>
+			<artifactId>wicketstuff-select2</artifactId>
 		</dependency>
 
         <dependency>

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
index aab5d83..8ac459d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
 
-import com.vaynberg.wicket.select2.Select2Choice;
-
 import org.apache.wicket.markup.html.form.FormComponentPanel;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -42,7 +40,7 @@ class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAdapter> i
 
     /**
      * Necessary because {@link FormComponentPanel} overrides this as <tt>true</tt>, whereas we want to
-     * report on the state of the underlying {@link Select2Choice}.
+     * report on the state of the underlying {@link org.wicketstuff.select2.Select2Choice}.
      */
     @Override
     public boolean checkRequired() {
@@ -55,8 +53,6 @@ class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAdapter> i
     /**
      * Since we override {@link #convertInput()}, it is (apparently) enough to
      * just return a value that is suitable for error reporting.
-     * 
-     * @see DateField#getInput() for reference
      */
     @Override
     public String getInput() {

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index d712030..937f990 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -24,9 +24,9 @@ import java.util.List;
 import javax.inject.Inject;
 
 import com.google.common.collect.Lists;
-import com.vaynberg.wicket.select2.ChoiceProvider;
-import com.vaynberg.wicket.select2.Select2Choice;
-import com.vaynberg.wicket.select2.Settings;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Select2Choice;
+import org.wicketstuff.select2.Settings;
 
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
index 0062e8c..bb72f1e 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
@@ -22,7 +22,7 @@ import java.util.Locale;
 import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
-import com.vaynberg.wicket.select2.TextChoiceProvider;
+import org.wicketstuff.select2.TextChoiceProvider;
 import org.apache.wicket.Session;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.string.Strings;
@@ -76,7 +76,7 @@ public abstract class ObjectAdapterMementoProviderAbstract extends TextChoicePro
     }
 
     @Override
-    public void query(final String term, final int page, final com.vaynberg.wicket.select2.Response<ObjectAdapterMemento> response) {
+    public void query(final String term, final int page, final org.wicketstuff.select2.Response<ObjectAdapterMemento> response) {
         
         final List<ObjectAdapterMemento> mementos = Lists.newArrayList(obtainMementos(term));
         // if not mandatory, and the list doesn't contain null already, then add it in.

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
index 76badf0..6d19acc 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
@@ -17,14 +17,14 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs;
 
 import java.util.Collection;
-import com.vaynberg.wicket.select2.Response;
-import com.vaynberg.wicket.select2.Select2Choice;
-import com.vaynberg.wicket.select2.Settings;
-import com.vaynberg.wicket.select2.TextChoiceProvider;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2Choice;
+import org.wicketstuff.select2.Settings;
+import org.wicketstuff.select2.TextChoiceProvider;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
@@ -51,34 +51,7 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
         final BreadcrumbModel breadcrumbModel = session.getBreadcrumbModel();
         
         final IModel<EntityModel> entityModel = new Model<EntityModel>();
-        final Select2Choice<EntityModel> breadcrumbChoice = new Select2Choice<EntityModel>(ID_BREADCRUMBS, entityModel);
-
-        breadcrumbChoice.add(
-            new AjaxFormComponentUpdatingBehavior("change"){
-    
-                private static final long serialVersionUID = 1L;
-    
-                @Override
-                protected void onUpdate(AjaxRequestTarget target) {
-                    final String oidStr = breadcrumbChoice.getInput();
-                    final EntityModel selectedModel = breadcrumbModel.lookup(oidStr);
-                    if(selectedModel == null) {
-                        final MessageBroker messageBroker = IsisContext.getAuthenticationSession().getMessageBroker();
-                        messageBroker.addWarning("Cannot find object");
-                        String feedbackMsg = JGrowlUtil.asJGrowlCalls(messageBroker);
-                        target.appendJavaScript(feedbackMsg);
-                        breadcrumbModel.remove(oidStr);
-                        return;
-                    }
-                    setResponsePage(EntityPage.class, selectedModel.getPageParameters());
-                }
-            });
-        
-        final Settings settings = breadcrumbChoice.getSettings();
-        settings.setMinimumInputLength(0);
-        settings.setWidth("100%");
-        
-        breadcrumbChoice.setProvider(new TextChoiceProvider<EntityModel>() {
+        TextChoiceProvider<EntityModel> choiceProvider = new TextChoiceProvider<EntityModel>() {
 
             private static final long serialVersionUID = 1L;
 
@@ -91,7 +64,7 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
             protected Object getId(EntityModel choice) {
                 try {
                     return PageParameterNames.OBJECT_OID.getStringFrom(choice.getPageParameters());
-                } catch(Exception ex) {
+                } catch (Exception ex) {
                     breadcrumbModel.remove(choice);
                     return null;
                 }
@@ -106,8 +79,35 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
             public Collection<EntityModel> toChoices(Collection<String> ids) {
                 return breadcrumbModel.getList();
             }
-            
-        });
+
+        };
+        final Select2Choice<EntityModel> breadcrumbChoice = new Select2Choice<>(ID_BREADCRUMBS, entityModel, choiceProvider);
+
+        breadcrumbChoice.add(
+            new AjaxFormComponentUpdatingBehavior("change"){
+    
+                private static final long serialVersionUID = 1L;
+    
+                @Override
+                protected void onUpdate(AjaxRequestTarget target) {
+                    final String oidStr = breadcrumbChoice.getInput();
+                    final EntityModel selectedModel = breadcrumbModel.lookup(oidStr);
+                    if(selectedModel == null) {
+                        final MessageBroker messageBroker = IsisContext.getAuthenticationSession().getMessageBroker();
+                        messageBroker.addWarning("Cannot find object");
+                        String feedbackMsg = JGrowlUtil.asJGrowlCalls(messageBroker);
+                        target.appendJavaScript(feedbackMsg);
+                        breadcrumbModel.remove(oidStr);
+                        return;
+                    }
+                    setResponsePage(EntityPage.class, selectedModel.getPageParameters());
+                }
+            });
+        
+        final Settings settings = breadcrumbChoice.getSettings();
+        settings.setMinimumInputLength(0);
+        settings.setWidth("100%");
+        
         addOrReplace(breadcrumbChoice);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
index acb4daa..6277b87 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
@@ -18,12 +18,11 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.widgets.select2;
 
-import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
-
 import com.google.common.collect.Lists;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.request.resource.CssResourceReference;
+import org.wicketstuff.select2.Select2Choice;
 
 /**
  * A CSS reference that loads <a href="https://github.com/ivaynberg/select2/">Select2.css</a>
@@ -38,6 +37,6 @@ public class Select2BootstrapCssReference extends CssResourceReference {
 
     @Override
     public Iterable<? extends HeaderItem> getDependencies() {
-        return Lists.newArrayList(CssHeaderItem.forReference(new WebjarsCssResourceReference("/select2/current/select2.css")));
+        return Lists.newArrayList(CssHeaderItem.forReference(new CssResourceReference(Select2Choice.class, "res/select2.css")));
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
index fb82253..476286b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
@@ -16,9 +16,14 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.widgets.select2;
 
-import com.vaynberg.wicket.select2.Select2Choice;
+import java.util.Collection;
 
+import org.apache.wicket.ajax.json.JSONException;
+import org.apache.wicket.ajax.json.JSONWriter;
 import org.apache.wicket.model.IModel;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2Choice;
 
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -28,8 +33,28 @@ public final class Select2ChoiceUtil  {
     private Select2ChoiceUtil(){}
 
     public static Select2Choice<ObjectAdapterMemento> newSelect2Choice(String id, final IModel<ObjectAdapterMemento> modelObject, ScalarModel scalarModel) {
-        Select2Choice<ObjectAdapterMemento> select2Choice = new Select2Choice<>(id, modelObject);
+        Select2Choice<ObjectAdapterMemento> select2Choice = new Select2Choice<>(id, modelObject, EmptyChoiceProvider.INSTANCE);
         select2Choice.setRequired(scalarModel.isRequired());
         return select2Choice;
     }
+
+    private static class EmptyChoiceProvider extends ChoiceProvider<ObjectAdapterMemento> {
+
+        private static final EmptyChoiceProvider INSTANCE = new EmptyChoiceProvider();
+
+        @Override
+        public void query(String term, int page, Response<ObjectAdapterMemento> response) {
+
+        }
+
+        @Override
+        public void toJson(ObjectAdapterMemento choice, JSONWriter writer) throws JSONException {
+
+        }
+
+        @Override
+        public Collection<ObjectAdapterMemento> toChoices(Collection<String> ids) {
+            return null;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/e654f934/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index 8a05dd3..964188d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.widgets.valuechoices;
 
+
 import java.util.Collection;
 import java.util.List;
 
@@ -25,8 +26,8 @@ import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
-import com.vaynberg.wicket.select2.ChoiceProvider;
-import com.vaynberg.wicket.select2.Select2Choice;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Select2Choice;
 
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
@@ -192,6 +193,7 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
 
         @Override
         protected List<ObjectAdapterMemento> obtainMementos(String term) {
+            // return choicesMementos;  // ISIS-1020: as of Jan 2015
             return obtainMementos(term, choicesMementos);
         }
 
@@ -273,7 +275,6 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
     
     // //////////////////////////////////////
 
-
     public ObjectAdapterMemento getPending() {
         return pending;
     }


[11/12] isis git commit: ISIS-1195: added back in the rat plugin config for simpleapp

Posted by da...@apache.org.
ISIS-1195: added back in the rat plugin config for simpleapp

... had been removed as presumably I thought wasn't needed, but the release instructions expect it to be here


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/7a820f69
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/7a820f69
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/7a820f69

Branch: refs/heads/master
Commit: 7a820f69ef0b84353fedeead34629845e8d97667
Parents: c5eaf8b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Oct 26 12:17:20 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 18:15:38 2015 +0000

----------------------------------------------------------------------
 example/application/simpleapp/pom.xml | 104 ++++++++++++++++++++++++++++-
 1 file changed, 103 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/7a820f69/example/application/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index fc86cd1..ff67e85 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -34,7 +34,7 @@
     </prerequisites>
 
     <properties>
-        <isis.version>1.10.0-SNAPSHOT</isis.version>
+        <isis.version>1.10.0</isis.version>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -215,6 +215,108 @@
                     <artifactId>jetty-console-maven-plugin</artifactId>
                     <version>1.56</version>
                 </plugin>
+
+                <!-- Apache Release Audit Tool -->
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <version>0.10</version>
+                    <configuration>
+                        <addDefaultLicenseMatchers>true</addDefaultLicenseMatchers>
+                        <excludeSubProjects>true</excludeSubProjects>
+                        <excludes>
+                            <exclude>**/target/**</exclude>
+                            <exclude>**/target-ide/**</exclude>
+
+                            <exclude>**/*.project</exclude>
+                            <exclude>**/.classpath</exclude>
+                            <exclude>**/.settings/**</exclude>
+                            <exclude>**/*.launch</exclude>
+                            <exclude>**/ide/eclipse/launch/**</exclude>
+                            <exclude>**/ide/intellij/launch/**</exclude>
+                            <exclude>src/site/resources/ide/eclipse/**</exclude>
+
+                            <exclude>**/rebel.xml</exclude>
+                            <exclude>**/*.gitignore</exclude>
+                            <exclude>**/*.log</exclude>
+                            <exclude>**/*.pdn</exclude>
+                            <exclude>**/*.svg</exclude>
+                            <exclude>**/*.json</exclude>
+                            <exclude>**/*.min.js</exclude>
+                            <exclude>**/*.js</exclude>
+
+                            <exclude>**/translations.pot</exclude>
+                            <exclude>**/translations*.po</exclude>
+                        </excludes>
+                        <licenses>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>AL2</licenseFamilyCategory>
+                                <licenseFamilyName>Apache License 2.0</licenseFamilyName>
+                                <notes/>
+                                <patterns>
+                                    <pattern>Licensed to the Apache Software Foundation (ASF) under one</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>JQRY</licenseFamilyCategory>
+                                <licenseFamilyName>MIT</licenseFamilyName>
+                                <notes/>
+                                <patterns>
+                                    <pattern>Dual licensed under the MIT or GPL Version 2 licenses.</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>JMOCK</licenseFamilyCategory>
+                                <licenseFamilyName>JMock</licenseFamilyName>
+                                <notes/>
+                                <patterns>
+                                    <pattern>Copyright (c) 2000-2007, jMock.org</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>DOCBK</licenseFamilyCategory>
+                                <licenseFamilyName>DocBook 4.5</licenseFamilyName>
+                                <notes/>
+                                <patterns>
+                                    <pattern>Permission to copy in any form is granted for use</pattern>
+                                    <pattern>Permission to use, copy, modify and distribute the DocBook DTD</pattern>
+                                    <pattern>is hereby granted in perpetuity, provided that the above copyright
+                                    </pattern>
+                                    <pattern>This is the catalog data file for DocBook XML V4.5. It is provided as
+                                    </pattern>
+                                    <pattern>XML Catalog data for DocBook XML V4.5</pattern>
+                                    <pattern>DocBook additional general entities V4.5</pattern>
+                                    <pattern>XML EXCHANGE TABLE MODEL DECLARATION MODULE</pattern>
+                                </patterns>
+                            </license>
+                            <license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
+                                <licenseFamilyCategory>W3C</licenseFamilyCategory>
+                                <licenseFamilyName>XHTML</licenseFamilyName>
+                                <notes/>
+                                <patterns>
+                                    <pattern>Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),</pattern>
+                                </patterns>
+                            </license>
+                        </licenses>
+                        <licenseFamilies>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>Apache License 2.0</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>MIT</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>JMock</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>DocBook 4.5</familyName>
+                            </licenseFamily>
+                            <licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
+                                <familyName>XHTML</familyName>
+                            </licenseFamily>
+                        </licenseFamilies>
+                    </configuration>
+                </plugin>
             </plugins>
         </pluginManagement>
         <plugins>


[07/12] isis git commit: ISIS-1195: updating docs (general introductory articles)

Posted by da...@apache.org.
ISIS-1195: updating docs (general introductory articles)


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/1dad19b9
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/1dad19b9
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/1dad19b9

Branch: refs/heads/master
Commit: 1dad19b989d55143bd212f85c55bba6b2133f853
Parents: 3693daa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 2 10:03:35 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 2 14:36:21 2015 +0000

----------------------------------------------------------------------
 .../_ug_core-concepts_building-blocks.adoc      | 150 ++++++++++++++++---
 ...oncepts_philosophy_domain-driven-design.adoc |   4 +-
 ...core-concepts_principles_apache-isis-vs.adoc |  24 +--
 ...concepts_principles_apache-isis-vs_cqrs.adoc |  28 ++++
 ...rinciples_apache-isis-vs_event-sourcing.adoc |  19 +++
 .../_ug_core-concepts_principles_your-apps.adoc |  38 ++---
 .../building-blocks/types-of-domain-object.png  | Bin 0 -> 30851 bytes
 .../building-blocks/types-of-domain-object.pptx | Bin 0 -> 64342 bytes
 .../src/main/asciidoc/guides/ug.adoc            |  19 +--
 9 files changed, 210 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
index 180ab7c..3c6589d 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_building-blocks.adoc
@@ -4,36 +4,143 @@
 :_basedir: ../
 :_imagesdir: images/
 
-NOTE: TODO
+In this section we run through the main building blocks that make up an Apache Isis application.
 
-## A MetaModel with Explicit and Inferred Semantics
+[[_ug_core-concepts_building-blocks_metamodel]]
+## A MetaModel
 
-NOTE: TODO
+At its core, Apache Isis is a metamodel that is built at runtime from the domain classes (eg `Customer.java`), along
+with optional supporting metadata (eg `Customer.layout.json`).
 
-* use of annotations
-** reuse JEE annotations where possible
-* layout hints are overridable, to avoid restarting the app/speed up feedback
+The contents of this metamodel is inferred from the Java classes discovered on the classpath: the entities and
+supporting services, as well the members of those classes.  The detail of the metamodel is generally explicit, usually
+represented by Java annotations such as `@Title` or `@Action`.  Notably the metamodel is
+xref:ug.adoc#_ug_extending_programming-model[extensible]; it is possible to teach Apache Isis new programming
+conventions/rules (and conversely to remove those that are built in).
 
+Most of the annotations recognized by the framework are defined by the Apache Isis framework itself.  For example the
+`@Title` annotation - which identifies how the framework should derive a human-readable label for each rendered
+domain object - is part of the `org.apache.isis.applib.annotations` package.  However the framework also recognizes
+certain other JEE annotations such as `@javax.inject.Inject` (used for dependency injection).
 
-## Objects & Services
+The framework uses DataNucleus for its persistence mechanism.  This is an ORM that implements the JDO and JPA APIs, and
+which can map domain objects either to an RDBMS or to various NoSQL objectstores such as MongoDB or Neo4J.  Apache Isis
+recognizes a number of the JDO annotations such as `@javax.jdo.annotations.Column(allowNulls=...)`.
 
-NOTE: TODO
+In addition, the framework builds up the metamodel for each domain object using
+xref:rg.adoc#_rg_object-layout[layout hints], such as `Customer.layout.json`.  These provide metadata such as
+grouping elements of the UI together, using multi-column layouts, and so on.  The layout file can be modified while the
+application is still running, and are picked up automatically; a useful way to speed up feedback.
+
+[TIP]
+====
+At the time of writing Apache Isis only recognizes and supports the JDO API, though we expect JPA to be supported
+in the future.  We also expect to generalize support for `.layout.json` to be able to read such metadata from other
+sources.
+====
+
+
+[[_ug_core-concepts_building-blocks_types-of-domain-objects]]
+## Type of Domain Objects
+
+Most domain objects that the end-user interacts with are domain entities, such as `Customer`, `Order`, `Product` and
+so on.  These are persistent objects and which are mapped to a database (usually relational), using JDO/DataNucleus
+annotations.  From the end-user's perspective the UI displays a single domain object per page; they can then inspect
+and modify its state, and navigate to related objects.
+
+The next type of domain object to discuss is domain services.  These are (usually) singleton stateless services
+that provide additional functionality.  The behaviour of these services is rendered in various ways, though the most
+obvious is as the menu actions on the top-level menu bars in the xref:ug.adoc#_ug_wicket-viewer[Wicket viewer]'s UI.
+
+Domain objects can also delegate to domain services; domain services are automatically injected into every other domain
+object; this includes domain entities as well as other services.  This injection of domain services into entities is
+significant: it allows business logic to be implemented in the domain entities, rather than have it "leach away" into
+supporting service layers.  Said another way: it is the means by which Apache Isis helps you avoid the anaemic
+domain model anti-pattern.
+
+As well as domain entities - mapped to a datastore - Apache Isis also supports view models.  End users interact with
+view models in the same way as a domain entity, indeed they are unlikely to distinguish one from the other.  However
+view models are _not_ mapped to the underlying database, rather they represent some aggregation of state from one or
+more underlying entities.  Their state is serialized and recreated from their internal identifier; this identifier is
+visible as the object's URL in the xref:ug.adoc#_ug_wicket-viewer[Wicket viewer] or
+xref:ug.adoc#_ug_restfulobjects-viewer[RestfulObjects viewer].
+
+There's no need though for the view model to aggregate the state of regular domain entities.  A view model could also be used as a proxy for some externally managed entity, accessed over a web service or REST API; it could even be a representation
+ of state held in-memory (such as user preferences, for example).
+
+There are also several types of domain services.  Most easily described are those domain services (discussed above)
+that are represented as the menu actions on top-level menu bars.  Another variation are domain services that contribute
+behaviour or (derived) state to entities/view models.  Finally domain services may also simply provide additional non-UI
+functionality; an example being to perform an address geocoding lookup against the google-maps API.
+
+Also worth mentioning: domain services can also be either singletons (discussed above) or request-scoped; the latter
+being annotated with `@javax.enterprise.context.RequestScoped`.  An example of the request-scoped service is the
+xref:rg.adoc#_rg_services-api_manpage-Scratchpad[`Scratchpad`] service, for sharing arbitrary data between multiple objects.
+
+The final type of domain object is mixins.  These are similar to contributed services in that they also contribute (or rather,
+mixin) both behaviour or (derived) state to entities/view models.  However, they provide a more control over contributed services,
+with a cleaner programming model similar to traits found in other languages.
+
+The diagram below summarizes the various types of domain object:
+
+image::{_imagesdir}core-concepts/building-blocks/types-of-domain-object.png[width="860px",link="{_imagesdir}core-concepts/building-blocks/types-of-domain-object.png"]
 
-* domain model
-** domain objects
-*** domain entity
-*** view model
-** domain service
-** value type
 
-Anything else can be (should be) ignored by annotating with `@Programmatic`.
+The Apache Isis programming model offers some equivalent ways
 
 
+... todo
 
-## Properties, Collections and Actions
+
+[[_ug_core-concepts_building-blocks_objects-members]]
+## Object Members
+
+Every domain object in Apache Isis consists of these three types of members: properties, collections and actions.  Some (eg domain services and mixins) only contain
 
 NOTE: TODO
 
+For example, with:
+
+[source,java]
+----
+public class Customer
+    private String firstName;
+    public String getFirstName() { return firstName; }
+    public void setFirstName(String firstName) { this.firstName = firstName; }
+    ...
+}
+----
+
+the framework infers the `Customer` domain entity, which in turn has a `firstName` string _property_.
+
+Similarly, from:
+
+[source,java]
+----
+public class Customer
+    private SortedSet<Order> orders = new TreeSet<Order>();
+    public SortedSet<Order> getOrders() { return orders; }
+    public void setOrders(SortedSet<Order> orders) { this.orders = orders; }
+    ...
+}
+----
+
+the framework infers the `orders` _collection_.
+
+Finally:
+
+[source,java]
+----
+public class Customer
+    public Customer placeOrder(Product p, int quantity) { ... }
+    ...
+}
+----
+
+corresponds to the `placeOrder` _action_.
+
+
+
 
 ## Domain Entities vs View Models
 
@@ -43,6 +150,7 @@ NOTE: TODO
 
 
 
+[[_ug_core-concepts_building-blocks_domain-services]]
 ## Domain Services
 
 Domain services consist of a set of logically grouped actions, and as such follow the same conventions as for entities. However, a service cannot have (persisted) properties, nor can it have (persisted) collections.
@@ -68,20 +176,22 @@ In Apache Isis these are all implemented as domain services.  Indeed, it is quit
 
 
 
+[[_ug_core-concepts_building-blocks_value-objects]]
 ## Value Objects (Primitives)
 
 NOTE: TODO
 
 
 
-## Contributions
+[[_ug_core-concepts_building-blocks_mixins-and-contributions]]
+## Mixins & Contributions
 
 NOTE: TODO
 
 
 
-
-## Event Bus
+[[_ug_core-concepts_building-blocks_domain-events]]
+## Domain Events
 
 NOTE: TODO
 
@@ -89,5 +199,3 @@ NOTE: TODO
 
 
 
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
index e132bac..c1cd8c3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_philosophy_domain-driven-design.adoc
@@ -69,9 +69,9 @@ Changing the code means changing the model; refining the model requires a change
 ****
 
 
-Here also the word  *design* might mislead; some might again be thinking of design documents and design diagrams. But by  *design* we mean a way of organizing the domain concepts, which in turn leads to the way in which we organize their representation in code.
+Here also the word  *design* might mislead; some might be thinking of design documents and design diagrams, or perhaps of user interface (UX) design. But by  *design* we mean a way of organizing the domain concepts, which in turn leads to the way in which we organize their representation in code.
 
-Luckily, using *_object-oriented_* ( _OO_) languages such as Java, this is relatively easy to do;  _OO_ is based on a modeling paradigm anyway. We can express domain concepts using classes and interfaces, and we can express the relationships between those concepts using associations.
+Luckily, using *_object-oriented_* (_OO_) languages such as Java, this is relatively easy to do;  _OO_ is based on a modeling paradigm anyway. We can express domain concepts using classes and interfaces, and we can express the relationships between those concepts using associations.
 
 So far so good. Or maybe, so far so much motherhood and apple pie. Understanding the  _DDD_ concepts isn't the same as being able to apply them, and some of the  _DDD_ ideas can be difficult to put into practice. Time to discuss the naked objects pattern and how it eases that path by applying these central ideas of _DDD_ in a very concrete way.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs.adoc
index aee2c40..bd8c2c0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs.adoc
@@ -9,28 +9,8 @@ do they compare to Apache Isis?
 
 
 include::_ug_core-concepts_principles_apache-isis-vs_mvc-server-side-frameworks.adoc[leveloffset=+1]
-
-
-
-== vs CQRS
-
-NOTE: TODO
-
-== vs Event Sourcing
-
-NOTE: TODO
-
-
-== vs Angular
-
-NOTE: TODO
-
-
-
+include::_ug_core-concepts_principles_apache-isis-vs_cqrs.adoc[leveloffset=+1]
+include::_ug_core-concepts_principles_apache-isis-vs_event-sourcing.adoc[leveloffset=+1]
 include::_ug_core-concepts_principles_apache-isis-vs_metawidget.adoc[leveloffset=+1]
 
 
-
-== vs OpenXava
-
-NOTE: TODO

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_cqrs.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_cqrs.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_cqrs.adoc
new file mode 100644
index 0000000..ceed7a4
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_cqrs.adoc
@@ -0,0 +1,28 @@
+[[_ug_core-concepts_principles_apache-isis-vs_cqrs]]
+= vs CQRS
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+
+The CQRS architectural pattern (it stands for "Command Query Responsbility Separation") is the idea that the domain objects that mutate the state of the system - to which commands are sent and which then execute - should be separated from the mechanism by which the state of the system is queried (rendered).  The former are sometimes called the "write (domain) model", the latter the "read model".
+
+In the canonical version of this pattern there are separate datastores.  The commands act upon a command/write datastore.  The data in this datastore is then replicated in some way to the query/read datastore, usually denormalized or otherwise such that it is easy to query.  CQRS advocates recommend using very simple (almost naive) technology for the query/read model; it should be a simple projection of the query datastore.  Complexity instead lives elsewhere: business logic in the command/write model, and in the transformation logic betweeen the command/write and read/query datastores.  In particular, there is no requirement for the two datastores to use the same technology: one might be an RDBMS while the other a NoSQL datastore or even datawarehouse.
+
+In most implementations the command and query datastores are _not_ updated in the same transaction; instead there is some sort of replication mechanism.  This also means that the query datastore is eventually consistent rather than always consistent; there could be a lag of a few seconds before it is updated.  This means in turn that CQRS implementations require mechanisms to cater for offline query datastores; usually some sort of event bus.
+
+The CQRS architecture's extreme separation of responsibilities can result in a lot of boilerplate.  Any given domain concept, eg `Customer`, must be represented both in the command/write model and also in the query/read model.  Each business operation upon the command model is reified as a command object, for example `PlaceOrderCommand`.
+
+Comparing CQRS to Apache Isis, the most obvious difference is that Apache Isis does not separate out a command/write model from a query/read model, and there is usually just a single datastore.  But then again, having a separate read model just so that the querying is very straightforward is pointless with Apache Isis because, of course, Isis provides the UI "for free".
+
+There are other reasons though why a separate read model might make sense, such as to precompute particular queries, or against denormalized data.  In these cases Apache Isis can often provide a reasonable alternative, namely to map domain entities against RDBMS views, either materialized views or dynamic.  In such cases there is still only a single physical datastore, and so transactional integrity is retained.
+
+Or, the CQRS architecture can be more fully implemented with Apache Isis by introducing a separate read model, synchronized using the xref:rg.adoc#_rg_services-api_manpage-PublishingService[`PublishingService`], or using xref:rg.adoc#_rg_classes_super_manpage-AbstractSubscriber[subscribers]  on the xref:rg.adoc#_rg_services-api_manpage-EventBusService[`EventBusService`].  One can then use xref:ug.adoc#_ug_more-advanced_view-models[view models] to surface the data in the external read datastore.
+
+With respect to commands, Apache Isis does of course support the xref:rg.adoc#_rg_services-spi_manpage-CommandService[`CommandService`] which allows each business action to be reified into a `Command`.  However, names are misleading here: Apache Isis' commands are relatively passive, merely recording the intent of the user to invoke some operation.  In a CQRS architecture, though, commands take a more active role, locating and acting upon the domain objects.  More significantly, in CQRS each command has its own class, such as `PlaceOrderCommand`, instantiated by the client and then executed.  With Apache Isis, though, the end-user merely invokes the `placeOrder(...)` action upon the domain object; the framework itself creates the `Command` as a side-effect of this.
+
+In CQRS the commands correspond to the business logic that mutates the system.  Whether this logic is part of the command class (`PlaceOrderCommand`) or whether that command delegates to methods on the domain object is an implementation detail; but it certainly is common for the business logic to be wholly within the command object and for the domain object to be merely a data holder of the data within the command/write datastore.
+
+In Apache Isis this same separation of business logic from the underlying data can be accomplished most straightforwardly using xref:ug.adoc#_ug_more-advanced_decoupling_mixins[mixins] or xref:ug.adoc#_ug_how-tos_contributed-members[contributions].  In the UI (surfaced by the xref:ug.adoc#_ug_wicket-viewer[Wicket viewer]) or in the REST API (surfaced by the xref:ug.adoc#_ug_restfulobjects-viewer[RestfulObjects viewer]) the behaviour appears to reside on the domain object; however the behaviour actually resides on separate classes and is mixed in (like a trait) only at runtime.
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_event-sourcing.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_event-sourcing.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_event-sourcing.adoc
new file mode 100644
index 0000000..0b0f33c
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_apache-isis-vs_event-sourcing.adoc
@@ -0,0 +1,19 @@
+[[_ug_core-concepts_principles_apache-isis-vs_event-sourcing]]
+= vs Event Sourcing
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+:_basedir: ../
+:_imagesdir: images/
+
+
+
+The link:_ug_core-concepts_principles_apache-isis-vs_cqrs[CQRS architecture], discussed above, is often combined with _Event Sourcing_ pattern, though they are separate ideas.
+
+With event sourcing, each business operation emits a domain event (or possibly events) that allow other objects in the system to act accordingly.  For example, if a customer places an order then this might emit the `OrderPlacedEvent`.  Most significantly, the subscribers to these events can include the datastore itself; the state of the system is in effect a transaction log of every event that has occurred since "the beginning of time": it is sometimes called an event store.   With CQRS, this event datastore corresponds to the command/write datastore (the query/read datastore is of course derived from the command datastore).
+
+Although it might seem counter-intuitive to be able store persistent state in this way (as a souped up "transaction log"), the reality is that with modern compute capabilities make it quite feasible to replay many 10s/100s of thousands of events in a second.  And the architecture supports some interesting use cases; for example it becomes quite trivial to rewind the system back to some previous point in time.
+
+When combined with CQRS we see a command that triggers a business operation, and an event that results from it.  So, a `PlaceOrderCommand` command can result in an `OrderPlacedEvent` event.  A subscriber to this event might then generate a further command to act upon some other system (eg to dispatch the system).  Note that the event might be dispatched and consumed in-process or alternatively this might occur out-of-process.  If the latter, then the subscriber will operate within a separate transaction, meaning the usual eventual consistency concerns and also compensating actions if a rollback is required.  CQRS/event sourcing advocates point out - correctly  that this is just how things are in the "real world" too.
+
+In Apache Isis every business action (and indeed, property and collection) emits domain events through the xref:rg.adoc#_rg_services-api_manpage-EventBusService[`EventBusService`] , and can optionally also be published through the xref:rg.adoc#_rg_services-spi_manpage-PublishingService[`PublishingService`].  The former are dispatched and consumed in-process and within the same transaction, and for this reason the xref:rg.adoc#_rg_classes_super_manpage-AbstractSubscriber[subscribers] can also veto the events.  The latter are intended for out-of-process consumption; the (non-ASF) http://github.com/isisaddons/isis-module-publishing[Isis addons' publishing] and http://github.com/isisaddons/isis-module-publishmq[Isis addons' publishmq] modules provide implementations for dispatching either through a RDBMS database table, or directly through to an link:http://camel.apache.org[ActiveMQ] message queue (eg wired up to link:http://camel.apache.org[Apache Camel] event bus).
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_your-apps.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_your-apps.adoc b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_your-apps.adoc
index 185c697..97d89e4 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_your-apps.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ug_core-concepts_principles_your-apps.adoc
@@ -5,33 +5,35 @@
 :_imagesdir: images/
 
 
-NOTE: TODO
+Apache Isis is primarily aimed at custom-built "enterprise" applications.  The UI exposed by the xref:ug.adoc#_ug_wicket-viewer[Wicket viewer] is intended to be usable by domain experts, typically end-users within the organization.  The REST API exposed by the xref:ug.adoc#_ug_restfulobjects-viewer[RestfulObjects viewer] allows custom apps to be developed - eg using AngularJS or similar - for use by those requiring more guidance; typically end-users outside of the organization.
 
-== Decoupled
+But should your organization buy, or build?  Buying packaged software makes sense for statutory requirements, such as payroll or general ledger, or document management/retrieval.  But it makes much less sense to buy packaged software for the systems that support the core business: the software should fit the business, not the other way around.
 
-NOTE: TODO
 
-Long-term Cost of ownership
+NOTE: TODO - flesh out the following:
 
-Using:
+*  Flexible, "just enough"
 
-* dependency injection of services
-* OO design techniques, eg dependency inversion principle
-* an in-memory event bus
-* applib
+*  Decoupled
 
-* (no "Big Ball of Mud")
+* Long-term Cost of ownership
 
+** dependency injection of services
+** OO design techniques, eg dependency inversion principle
+** an in-memory event bus
+** applib
 
-== Honouring the Single Responsibility Principle
+** (no "Big Ball of Mud")
 
-NOTE: TODO - behaviourally Complete vs Contributions
+* Honouring the Single Responsibility Principle
+**  behaviourally Complete vs Contributions/Mixins
 
+* Testable +
++
+While Apache Isis can be used (very effectively) for simple CRUD-style applications, it is also intended to be used for complex business domains.  Ensuring that the business logic in
+such applications is correct means that the framework must (and does) provide robust testing support, both for developer-level unit testing and business-level (end-to-end) integration testing.
 
-== Testable
-
-NOTE: TODO
-
-While Apache Isis can be used (very effectively) for simple CRUD-style applications, it is also intended to be used for complex business domains.  Ensuring that the business logic in such applications is correct means that the framework must (and does) provide robust testing support, both for developer-level unit testing and business-level (end-to-end) integration testing.
-
+* Reusable building blocks +
++
+Isis addons, catalog.incode.org
 

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.png
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.png b/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.png
new file mode 100644
index 0000000..1ec6e18
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.pptx
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.pptx b/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.pptx
new file mode 100644
index 0000000..c0be2a5
Binary files /dev/null and b/adocs/documentation/src/main/asciidoc/guides/images/core-concepts/building-blocks/types-of-domain-object.pptx differ

http://git-wip-us.apache.org/repos/asf/isis/blob/1dad19b9/adocs/documentation/src/main/asciidoc/guides/ug.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/ug.adoc b/adocs/documentation/src/main/asciidoc/guides/ug.adoc
index ff5279c..4d1f4dc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ug.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ug.adoc
@@ -21,18 +21,19 @@ The users' guide is _not_ intended as a reference manual; for that see the *xref
 
 
 include::_ug_core-concepts.adoc[leveloffset=+1]
-include::_ug_getting-started.adoc[leveloffset=+1]
+//include::_ug_getting-started.adoc[leveloffset=+1]
 
 include::_ug_how-tos.adoc[leveloffset=+1]
 include::_ug_more-advanced.adoc[leveloffset=+1]
 
-include::_ug_wicket-viewer.adoc[leveloffset=+1]
-include::_ug_restfulobjects-viewer.adoc[leveloffset=+1]
-include::_ug_security.adoc[leveloffset=+1]
+//include::_ug_wicket-viewer.adoc[leveloffset=+1]
+//include::_ug_restfulobjects-viewer.adoc[leveloffset=+1]
+//include::_ug_security.adoc[leveloffset=+1]
+
+//include::_ug_testing.adoc[leveloffset=+1]
+//include::_ug_deployment.adoc[leveloffset=+1]
+//include::_ug_headless-access.adoc[leveloffset=+1]
+//include::_ug_extending.adoc[leveloffset=+1]
+//include::_ug_troubleshooting.adoc[leveloffset=+1]
 
-include::_ug_testing.adoc[leveloffset=+1]
-include::_ug_deployment.adoc[leveloffset=+1]
-include::_ug_headless-access.adoc[leveloffset=+1]
-include::_ug_extending.adoc[leveloffset=+1]
-include::_ug_troubleshooting.adoc[leveloffset=+1]