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 2013/01/23 09:28:28 UTC

[4/4] git commit: ISIS-309, ISIS-313: updates to get gmap3 to work; example fix

Updated Branches:
  refs/heads/master f8c1953b1 -> 0a89bdaec


ISIS-309, ISIS-313: updates to get gmap3 to work; example fix

Rather a lot of faff, principally to do with getting the necessary Javascript and CSS contributions
to be contributed to the header even though the object is not initially rendered.

In the end, I ended up rendering them all, but using CSS to hide the components that
aren't meant to be there (in LinksSelectorPanelAbstract).

To avoid accidentally resolving a lazily loaded colleciton, also introduced
the notion of a "dummy model"... an equivalent model that is empty, and which is passed into
the hidden components.  The subclasses of LinksSelectorPanelAbstract are required
to provide this dummy model.  In the case of Collections, the
CollecitonContentsLinksSelectorPanel delegates off to its model, EntityCollectionModel,
to create the dummy model.

The JDO example has also been updated to have the gmap3 code, but is
commented out.  Intention is that a tutorial can show how to wire in
new components just by commenting back in the relevant chunks of stuff.

~~~
This commit also fixes a bug in the ToDoItem (ISIS-313)


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

Branch: refs/heads/master
Commit: 0a89bdaec8c3415b299180e573fef98672e09dfe
Parents: 725c545
Author: Dan Haywood <da...@apache.org>
Authored: Wed Jan 23 08:24:44 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Wed Jan 23 08:24:44 2013 +0000

----------------------------------------------------------------------
 .../ComponentFactoryRegistrarDefault.java          |   11 +-
 .../wicket/model/models/EntityCollectionModel.java |    3 +
 .../wicket/ui/HeaderContributorProvider.java       |    8 +
 .../CollectionContentsAsAjaxTablePanel.java        |    7 +-
 .../CollectionContentsLinksSelectorPanel.html      |   11 +-
 .../CollectionContentsLinksSelectorPanel.java      |   50 +++++
 .../selector/links/EntityLinksSelectorPanel.html   |   11 +-
 .../selector/links/EntityLinksSelectorPanel.java   |   13 ++
 .../viewer/wicket/ui/panels/PanelAbstract.java     |    6 +-
 .../isis/viewer/wicket/ui/panels/PanelUtil.java    |   28 +++
 .../selector/links/LinksSelectorPanelAbstract.css  |    4 +
 .../selector/links/LinksSelectorPanelAbstract.java |  148 +++++++++------
 .../quickstart_wicket_restful_jdo/dom/pom.xml      |    5 +-
 .../dom/src/main/java/dom/todo/ToDoItem.java       |   60 ++++--
 .../dom/src/main/java/dom/todo/ToDoItems.java      |   13 ++-
 .../quickstart_wicket_restful_jdo/pom.xml          |    7 +-
 .../viewer-webapp/pom.xml                          |    3 +-
 .../WEB-INF/persistor_datanucleus.properties       |   16 +-
 .../viewer-webapp/src/main/webapp/WEB-INF/web.xml  |    9 +-
 19 files changed, 304 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
index 4088073..8f55d0b 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
@@ -95,7 +95,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
     public void addComponentFactories(final ComponentFactoryList componentFactories) {
 
         addComponentFactoriesActingAsSelectors(componentFactories);
-
+        
         addComponentFactoriesUsingServiceLoader(componentFactories);
 
         addBuiltInComponentFactories(componentFactories);
@@ -107,13 +107,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
      * are found first.
      */
     protected void addComponentFactoriesActingAsSelectors(final ComponentFactoryList componentFactories) {
-        
-        // either this set...
-    	// addDropDownSelectorFactories(componentFactories);
-
-        // ... or this set (but not both)
         addLinksSelectorFactories(componentFactories);
-
         componentFactories.add(new CollectionContentsAsUnresolvedPanelFactory()); // to prevent eager loading
     }
 
@@ -122,7 +116,8 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
         componentFactories.add(new CollectionContentsLinksSelectorPanelFactory());
     }
 
-    protected void addDropDownSelectorFactories(final ComponentFactoryList componentFactories) {
+    @SuppressWarnings("unused")
+    private void addDropDownSelectorFactories(final ComponentFactoryList componentFactories) {
         componentFactories.add(new EntityDropDownSelectorPanelFactory());
         componentFactories.add(new CollectionContentsDropDownSelectorPanelFactory());
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index db0070c..aa1daa5 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -291,4 +291,7 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
         return Collections.unmodifiableList(entityActions);
     }
 
+    public EntityCollectionModel asDummy() {
+        return new EntityCollectionModel(typeOf, Collections.<ObjectAdapterMemento>emptyList(), pageSize);
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/HeaderContributorProvider.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/HeaderContributorProvider.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/HeaderContributorProvider.java
new file mode 100644
index 0000000..52fb859
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/HeaderContributorProvider.java
@@ -0,0 +1,8 @@
+package org.apache.isis.viewer.wicket.ui;
+
+import org.apache.wicket.markup.html.IHeaderContributor;
+
+public interface HeaderContributorProvider {
+
+    IHeaderContributor getHeaderContributor();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index b13c2c9..00b172e 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -96,7 +96,7 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
 
         buildEntityActionsGui(bulkActions);
 
-        add(dataTable);
+        addOrReplace(dataTable);
     }
     
     private void addToggleboxColumnIfRequired(final List<IColumn<ObjectAdapter,String>> columns, List<ObjectAction> bulkActions) {
@@ -186,4 +186,9 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
         return new ObjectAdapterPropertyColumn(Model.of(property.getName()), property.getId(), property.getId());
     }
 
+    @Override
+    protected void onModelChanged() {
+        buildGui();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
index 9def114..3fc4675 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
@@ -24,7 +24,16 @@
 	<head></head>
 	<body>
 		<wicket:extend>
-			<div wicket:id="collectionContents" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-0" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+			<div wicket:id="collectionContents-1" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-2" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-3" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-4" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-5" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-6" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-7" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-8" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
+            <div wicket:id="collectionContents-9" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
 		</wicket:extend>
 	</body>
 </html>

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
index 38a8de2..62296a9 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
@@ -19,10 +19,18 @@
 
 package org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.links;
 
+import java.util.List;
+
+import org.apache.isis.applib.annotation.Resolve.Type;
+import org.apache.isis.core.metamodel.facets.members.resolve.ResolveFacet;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.CollectionContentsAsAjaxTablePanelFactory;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsAsUnresolvedPanelFactory;
 import org.apache.isis.viewer.wicket.ui.selector.links.LinksSelectorPanelAbstract;
+import org.apache.wicket.model.IModel;
 
 /**
  * Provides a list of links for selecting other views that support
@@ -41,4 +49,46 @@ public class CollectionContentsLinksSelectorPanel extends LinksSelectorPanelAbst
         super(id, ComponentType.COLLECTION_CONTENTS.toString(), model, factory);
     }
 
+    @Override
+    protected EntityCollectionModel dummyOf(EntityCollectionModel model) {
+        return model.asDummy();
+    }
+
+    /**
+     * return the index of {@link CollectionContentsAsUnresolvedPanelFactory unresolved panel} if present and not eager loading;
+     * else the index of {@link CollectionContentsAsAjaxTablePanelFactory ajax table} if present,
+     * otherwise first factory.
+     */
+    protected int determineInitialFactory(final List<ComponentFactory> componentFactories, final IModel<?> model) {
+        if(!hasResolveEagerlyFacet(model)) {
+            for(int i=0; i<componentFactories.size(); i++) {
+                if(componentFactories.get(i) instanceof CollectionContentsAsUnresolvedPanelFactory) {
+                    return i;
+                }
+            }
+        }
+        for(int i=0; i<componentFactories.size(); i++) {
+            if(componentFactories.get(i) instanceof CollectionContentsAsAjaxTablePanelFactory) {
+                return i;
+            }
+        }
+        return 0;
+    }
+
+    private static boolean hasResolveEagerlyFacet(IModel<?> model) {
+        if(!(model instanceof EntityCollectionModel)) {
+            return false;
+        }
+        final EntityCollectionModel entityCollectionModel = (EntityCollectionModel) model;
+        if(!entityCollectionModel.isParented()) {
+            return false;
+        }
+
+        final OneToManyAssociation collection = 
+                entityCollectionModel.getCollectionMemento().getCollection();
+        ResolveFacet resolveFacet = collection.getFacet(ResolveFacet.class);
+        return resolveFacet != null && resolveFacet.value() == Type.EAGERLY;
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.html
index d083efb..3fead07 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.html
@@ -24,7 +24,16 @@
 	<head></head>
 	<body>
 		<wicket:extend>
-			<div wicket:id="entity" class="entityLinksSelectorPanel entityComponentType"></div>
+			<div wicket:id="entity-0" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-1" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-2" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-3" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-4" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-5" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-6" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-7" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-8" class="entityLinksSelectorPanel entityComponentType"></div>
+            <div wicket:id="entity-9" class="entityLinksSelectorPanel entityComponentType"></div>
 		</wicket:extend>
 	</body>
 </html>

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java
index 13bcbec..b023dfe 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanel.java
@@ -19,10 +19,13 @@
 
 package org.apache.isis.viewer.wicket.ui.components.entity.selector.links;
 
+import java.util.List;
+
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.selector.links.LinksSelectorPanelAbstract;
+import org.apache.wicket.model.IModel;
 
 /**
  * Provides a list of links for selecting other views that support
@@ -40,4 +43,14 @@ public class EntityLinksSelectorPanel extends LinksSelectorPanelAbstract<EntityM
         super(id, ComponentType.ENTITY.toString(), model, factory);
     }
 
+    @Override
+    protected EntityModel dummyOf(EntityModel model) {
+        return model;
+    }
+
+    @Override
+    protected int determineInitialFactory(List<ComponentFactory> componentFactories, IModel<?> model) {
+        return 0;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index d2fc109..017bb37 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -25,12 +25,10 @@ import com.google.inject.Inject;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.Session;
-import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.CssResourceReference;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
@@ -131,10 +129,10 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel implement
      * their own CSS if required.
      */
     protected void renderHead(final IHeaderResponse response, final Class<?> cls) {
-        final String url = cls.getSimpleName() + ".css";
-        response.render(CssHeaderItem.forReference(new CssResourceReference(cls, url)));
+        PanelUtil.renderHead(response, cls);
     }
 
+
     // ///////////////////////////////////////////////////////////////////
     // Convenience
     // ///////////////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
new file mode 100644
index 0000000..4938bcb
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
@@ -0,0 +1,28 @@
+package org.apache.isis.viewer.wicket.ui.panels;
+
+import org.apache.isis.viewer.wicket.ui.selector.links.LinksSelectorPanelAbstract;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.request.resource.CssResourceReference;
+
+import com.google.common.base.Strings;
+
+public final class PanelUtil {
+
+    private PanelUtil(){}
+
+    /**
+     * The contribution to the header performed implicitly by {@link PanelAbstract}.
+     * 
+     * <p>
+     * Factored out for reuse by {@link LinksSelectorPanelAbstract}.
+     */
+    public static void renderHead(final IHeaderResponse response, final Class<?> cls) {
+        String simpleName = cls.getSimpleName();
+        if(Strings.isNullOrEmpty(simpleName)) {
+            return; // eg inner classes
+        }
+        final String url = simpleName + ".css";
+        response.render(CssHeaderItem.forReference(new CssResourceReference(cls, url)));
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
index 082112c..16a4a82 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
@@ -108,3 +108,7 @@ a span.ViewLinkItem.table {
 	text-transform:uppercase;
 	font-size:0.85em;
 }
+
+.linksSelectorPanel .link-selector-panel-invisible {
+	display:none;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
index fa1242b..0d69df4 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
@@ -21,26 +21,19 @@ package org.apache.isis.viewer.wicket.ui.selector.links;
 
 import java.util.List;
 
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.Collections2;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.annotation.Resolve.Type;
 import org.apache.isis.core.commons.lang.StringUtils;
-import org.apache.isis.core.metamodel.facets.members.resolve.ResolveFacet;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.links.LinksProvider;
-import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsAsUnresolvedPanelFactory;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -50,10 +43,16 @@ import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
+
 public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends PanelAbstract<T> {
 
     private static final long serialVersionUID = 1L;
 
+    private static final String INVISIBLE_CLASS = "link-selector-panel-invisible";
+    private static final int MAX_NUM_UNDERLYING_VIEWS = 10;
 
     private static final String ID_ADDITIONAL_LINKS = "additionalLinks";
     private static final String ID_ADDITIONAL_LINK_LIST = "additionalLinkList";
@@ -68,16 +67,16 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
     private static final String ID_VIEW_TITLE = "viewTitle";
 
     private final ComponentType componentType;
-
+    
     private ComponentFactory selectedComponentFactory;
 
-    public LinksSelectorPanelAbstract(final String id, final String underlyingId, final T model, final ComponentFactory factory) {
+    public LinksSelectorPanelAbstract(final String id, final String underlyingIdPrefix, final T model, final ComponentFactory factory) {
         super(id, model);
 
         componentType = factory.getComponentType();
 
         addAdditionalLinks(model);
-        addUnderlyingViews(underlyingId, model, factory);
+        addUnderlyingViews(underlyingIdPrefix, model, factory);
     }
 
     protected void addAdditionalLinks(final T model) {
@@ -114,22 +113,44 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
             }
         };
         container.addOrReplace(listView);
-        
         addOrReplace(views);
-        
-        
     }
 
-    private void addUnderlyingViews(final String underlyingId, final T model, final ComponentFactory factory) {
+    private void addUnderlyingViews(final String underlyingIdPrefix, final T model, final ComponentFactory factory) {
         final List<ComponentFactory> componentFactories = findOtherComponentFactories(model, factory);
 
-        final ComponentFactory selectedComponentFactory = Iterables.find(componentFactories, determineInitialFactory(model));
+        final int selected = determineInitialFactory(componentFactories, model);
+
+        final LinksSelectorPanelAbstract<T> selectorPanel = LinksSelectorPanelAbstract.this;
+        
+        // create all, hide the one not selected
+        final Component[] underlyingViews = new Component[MAX_NUM_UNDERLYING_VIEWS];
+        int i = 0;
+        for (ComponentFactory componentFactory : componentFactories) {
+            final String underlyingId = underlyingIdPrefix + "-" + i;
+            
+            final T emptyModel = dummyOf(model);
+            Component underlyingView = componentFactory.createComponent(underlyingId, 
+                   i==selected? model: emptyModel);
+            underlyingViews[i++] = underlyingView;
+            selectorPanel.addOrReplace(underlyingView);
+        }
+
+        // hide any unused placeholders
+        while(i<MAX_NUM_UNDERLYING_VIEWS) {
+            String underlyingId = underlyingIdPrefix + "-" + i;
+            permanentlyHide(underlyingId);
+            i++;
+        }
+        
+        // selector
         if (componentFactories.size() <= 1) {
             permanentlyHide(ID_VIEWS);
         } else {
             final Model<ComponentFactory> componentFactoryModel = new Model<ComponentFactory>();
             
-            componentFactoryModel.setObject(selectedComponentFactory);
+            selectorPanel.selectedComponentFactory = componentFactories.get(selected);
+            componentFactoryModel.setObject(selectorPanel.selectedComponentFactory);
 
             final WebMarkupContainer views = new WebMarkupContainer(ID_VIEWS);
             
@@ -146,27 +167,36 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
 
                 @Override
                 protected void populateItem(ListItem<ComponentFactory> item) {
-                    final ComponentFactory componentFactory = item.getModelObject();
                     
+                    final int underlyingViewNum = item.getIndex();
+                    
+                    final ComponentFactory componentFactory = item.getModelObject();
                     final AbstractLink link = new AjaxLink<Void>(ID_VIEW_LINK) {
-
-                                private static final long serialVersionUID = 1L;
-
-                                @Override
-                                public void onClick(AjaxRequestTarget target) {
-                                    LinksSelectorPanelAbstract<T> selectorPanel = LinksSelectorPanelAbstract.this;
-                                    selectorPanel.select(underlyingId, model, componentFactory);
-                                    target.add(selectorPanel, views);
-                                }
-                            };
+                        private static final long serialVersionUID = 1L;
+                        @Override
+                        public void onClick(AjaxRequestTarget target) {
                             
+                            for(int i=0; i<MAX_NUM_UNDERLYING_VIEWS; i++) {
+                                final Component component = underlyingViews[i];
+                                T dummyModel = dummyOf(model);
+                                
+                                if(component != null) {
+                                    final boolean isSelected = i == underlyingViewNum;
+                                    applyCssVisibility(component, isSelected);
+                                    component.setDefaultModel(isSelected? model: dummyModel);
+                                }
+                            }
+                            selectorPanel.selectedComponentFactory = componentFactory;
+                            target.add(selectorPanel, views);
+                        }
+                    };
                     String name = nameFor(componentFactory);
                     Label viewTitleLabel = new Label(ID_VIEW_TITLE, name);
                     viewTitleLabel.add(new CssClassAppender(StringUtils.toLowerDashed(name)));
                     link.add(viewTitleLabel);
                     item.add(link);
-                    LinksSelectorPanelAbstract<T> selectorPanel = LinksSelectorPanelAbstract.this;
-                    link.setEnabled(selectorPanel.selectedComponentFactory != componentFactory);
+                    
+                    link.setEnabled(componentFactory != selectorPanel.selectedComponentFactory);
                 }
 
                 private String nameFor(final ComponentFactory componentFactory) {
@@ -174,43 +204,37 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
                 }
             };
             container.add(listView);
-            
             addOrReplace(views);
         }
-        select(underlyingId, model, selectedComponentFactory);
-    }
-
-    private void select(final String underlyingId, final T model, final ComponentFactory selectedComponentFactory) {
-        addOrReplace(selectedComponentFactory.createComponent(underlyingId, model));
-        this.selectedComponentFactory = selectedComponentFactory;
-    }
-
-    private static Predicate<ComponentFactory> determineInitialFactory(IModel<?> model) {
-        return hasResolveEagerlyFacet(model) 
-                ? new Predicate<ComponentFactory>() {
-                    @Override
-                    public boolean apply(ComponentFactory input) {
-                        return !(input instanceof CollectionContentsAsUnresolvedPanelFactory);
-                    }
+        
+        for(i=0; i<MAX_NUM_UNDERLYING_VIEWS; i++) {
+            Component component = underlyingViews[i];
+            if(component != null) {
+                if(i != selected) {
+                    component.add(new AttributeAppender("class", " " +
+                    		INVISIBLE_CLASS));
                 }
-                : Predicates.<ComponentFactory>alwaysTrue();
-    }
-
-    private static boolean hasResolveEagerlyFacet(IModel<?> model) {
-        if(!(model instanceof EntityCollectionModel)) {
-            return false;
-        }
-        final EntityCollectionModel entityCollectionModel = (EntityCollectionModel) model;
-        if(!entityCollectionModel.isParented()) {
-            return false;
+            }
         }
+    }
 
-        final OneToManyAssociation collection = 
-                entityCollectionModel.getCollectionMemento().getCollection();
-        ResolveFacet resolveFacet = collection.getFacet(ResolveFacet.class);
-        return resolveFacet != null && resolveFacet.value() == Type.EAGERLY;
+    /**
+     * Ask for a dummy (empty) {@link Model} to pass into those components that are rendered but will be
+     * made invisible using CSS styling.
+     */
+    protected abstract T dummyOf(T model);
+
+    private static void applyCssVisibility(final Component component, final boolean visible) {
+        final AttributeModifier modifier =  
+                visible 
+                    ? new AttributeModifier("class", String.valueOf(component.getMarkupAttributes().get("class")).replaceFirst(INVISIBLE_CLASS, "")) 
+                    : new AttributeAppender("class", " " +
+                    		INVISIBLE_CLASS);
+        component.add(modifier);
     }
 
+    protected abstract int determineInitialFactory(final List<ComponentFactory> componentFactories, final IModel<?> model);
+
     private List<ComponentFactory> findOtherComponentFactories(final T model, final ComponentFactory ignoreFactory) {
         final List<ComponentFactory> componentFactories = getComponentFactoryRegistry().findComponentFactories(componentType, model);
         return Lists.newArrayList(Collections2.filter(componentFactories, new Predicate<ComponentFactory>() {

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/pom.xml b/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
index 0ff30f6..8648a92 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/dom/pom.xml
@@ -118,10 +118,13 @@
             <artifactId>datanucleus-api-jdo</artifactId>
         </dependency>
         
+        <!--
+        GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3 
         <dependency>
             <groupId>com.danhaywood.isis.wicket.ui.components</groupId>
-            <artifactId>danhaywood-isis-wicket-gmap2-applib</artifactId>
+            <artifactId>danhaywood-isis-wicket-gmap3-applib</artifactId>
         </dependency>
+         -->
         
 	</dependencies>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
index 3e093fb..37353bc 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
@@ -18,11 +18,14 @@
  */
 package dom.todo;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import javax.jdo.JDOHelper;
+import javax.jdo.annotations.Element;
 import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.Join;
 import javax.jdo.annotations.Persistent;
 import javax.jdo.annotations.VersionStrategy;
 import javax.jdo.spi.PersistenceCapable;
@@ -52,9 +55,8 @@ import org.apache.isis.applib.value.Blob;
 import org.apache.isis.core.objectstore.jdo.applib.annotations.Auditable;
 import org.joda.time.LocalDate;
 
-import com.danhaywood.isis.wicket.gmap2.applib.Locatable;
-import com.danhaywood.isis.wicket.gmap2.applib.Location;
 import com.google.common.base.Objects;
+import com.google.common.collect.Lists;
 
 @javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE)
 @javax.jdo.annotations.DatastoreIdentity(strategy=javax.jdo.annotations.IdGeneratorStrategy.IDENTITY)
@@ -80,7 +82,7 @@ import com.google.common.base.Objects;
 @Auditable
 @AutoComplete(repository=ToDoItems.class, action="autoComplete")
 @MemberGroups({"General", "Detail"})
-public class ToDoItem implements Comparable<ToDoItem> /*, Locatable */{
+public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
 
 	private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 * 1000L;
 
@@ -272,16 +274,19 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable */{
     
     
     // {{ dependencies (Collection)
-    private List<ToDoItem> dependencies = new ArrayList<ToDoItem>();
+    @Persistent(table="TODO_DEPENDENCIES")
+    @Join(column="DEPENDING_TODO_ID")
+    @Element(column="DEPENDENT_TODO_ID")
+    private SortedSet<ToDoItem> dependencies = new TreeSet<ToDoItem>();
 
     @Disabled
     @MemberOrder(sequence = "1")
     @Resolve(Type.EAGERLY)
-    public List<ToDoItem> getDependencies() {
+    public SortedSet<ToDoItem> getDependencies() {
         return dependencies;
     }
 
-    public void setDependencies(final List<ToDoItem> dependencies) {
+    public void setDependencies(final SortedSet<ToDoItem> dependencies) {
         this.dependencies = dependencies;
     }
     // }}
@@ -319,7 +324,7 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable */{
         return null;
     }
     public List<ToDoItem> choices0Remove() {
-        return getDependencies();
+        return Lists.newArrayList(getDependencies());
     }
     // }}
 
@@ -331,8 +336,23 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable */{
     // nb: method is not called "clone()" is inherited by java.lang.Object and
     // (a) has different semantics and (b) is in any case automatically ignored
     // by the framework
-    public ToDoItem duplicate() {
-        return toDoItems.newToDo(getDescription() + " - Copy", getCategory(), getDueBy());
+    public ToDoItem duplicate(
+            @Named("Description") 
+            String description,
+            Category category, 
+            @Named("Due by") 
+            @Optional
+            LocalDate dueBy) {
+        return toDoItems.newToDo(description, category, dueBy);
+    }
+    public String default0Duplicate() {
+        return getDescription() + " - Copy";
+    }
+    public Category default1Duplicate() {
+        return getCategory();
+    }
+    public LocalDate default2Duplicate() {
+        return getDueBy();
     }
     // }}
 
@@ -352,7 +372,7 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable */{
     // {{ SimilarItems (derived collection)
     @MemberOrder(sequence = "5")
     @NotPersisted
-    @Resolve(Type.EAGERLY)
+    @Resolve(Type.LAZILY)
     public List<ToDoItem> getSimilarItems() {
         return toDoItems.similarTo(this);
     }
@@ -454,15 +474,19 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable */{
     }
     // }}
 
-//    @Override
+// GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3    
+//    // {{
+//    @Persistent
+//    private Location location;
+//    
+//    @MemberOrder(name="Detail", sequence = "10")
+//    @Optional
 //    public Location getLocation() {
-//        //51.5172� N, 0.1182� is Central London
-//        return new Location(51.5172+random(-0.05, +0.05), 0.1182 + random(-0.05, +0.05) );
+//        return location;
 //    }
-//
-//    private static double random(double from, double to) {
-//        return Math.random() * (to-from) + from;
+//    public void setLocation(Location location) {
+//        this.location = location;
 //    }
-
+//    // }}
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
index 7950778..59af784 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
@@ -27,7 +27,6 @@ import org.apache.isis.applib.annotation.ActionSemantics.Of;
 import org.apache.isis.applib.annotation.Hidden;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.NotContributed;
 import org.apache.isis.applib.annotation.NotInServiceMenu;
 import org.apache.isis.applib.filter.Filter;
 import org.joda.time.LocalDate;
@@ -112,11 +111,23 @@ public class ToDoItems extends AbstractFactoryAndRepository {
         toDoItem.setCategory(category);
         toDoItem.setOwnedBy(userName);
         toDoItem.setDueBy(dueBy);
+
+        // 
+        // GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3        
+        // toDoItem.setLocation(
+        //    new Location(51.5172+random(-0.05, +0.05), 0.1182 + random(-0.05, +0.05)));
+        //
+        
         persist(toDoItem);
         return toDoItem;
     }
+    
+    private static double random(double from, double to) {
+        return Math.random() * (to-from) + from;
+    }
     // }}
 
+
     
     // {{ similarTo (action)
     @NotInServiceMenu

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/example/application/quickstart_wicket_restful_jdo/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/pom.xml b/example/application/quickstart_wicket_restful_jdo/pom.xml
index 767a85c..f3b6998 100644
--- a/example/application/quickstart_wicket_restful_jdo/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/pom.xml
@@ -226,13 +226,16 @@
 
 
             <!-- 3rd party extensions -->
+            <!--
+            GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
             <dependency>
                 <groupId>com.danhaywood.isis.wicket.ui.components</groupId>
-                <artifactId>danhaywood-isis-wicket-gmap2</artifactId>
-                <version>0.0.1-SNAPSHOT</version>
+                <artifactId>danhaywood-isis-wicket-gmap3</artifactId>
+                <version>1.0.0-SNAPSHOT</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            -->
 
         </dependencies>
     </dependencyManagement>

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
index f8c05f7..47cb003 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
@@ -167,9 +167,10 @@
 
         <!-- 3rd party dependency -->
         <!-- 
+        GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
         <dependency>
             <groupId>com.danhaywood.isis.wicket.ui.components</groupId>
-            <artifactId>danhaywood-isis-wicket-gmap2-ui</artifactId>
+            <artifactId>danhaywood-isis-wicket-gmap3-ui</artifactId>
         </dependency>
          -->
 

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
index fd264f9..8591588 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
@@ -43,18 +43,18 @@ isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=fa
 #
 # HSQLDB in-memory
 #
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
 
 #
 # HSQLDB in-memory (using log4jdbc-remix)
 #
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:hsqldb:mem:test
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:hsqldb:mem:test
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/0a89bdae/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
index b81eada..48a034e 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
@@ -161,7 +161,14 @@
     </filter-mapping>
 
 
-
+    <context-param>
+        <param-name>configuration</param-name>
+        <!-- 
+        <param-value>deployment</param-value>
+         -->
+        <param-value>development</param-value>
+    </context-param>
+    
    
     <!--
     -