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/11/22 13:43:50 UTC

git commit: ISIS-602: render from JSON dynamic layout

Updated Branches:
  refs/heads/master e04c40391 -> 0da0070fe


ISIS-602: render from JSON dynamic layout

also:
- minor refactorings to MemberOrderFacetFactory and
  PagedOnParentedCollectionFacetFactory, to follow similar style


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

Branch: refs/heads/master
Commit: 0da0070feb7a98a2cd8b6f17999c86f3bec54d0e
Parents: e04c403
Author: Dan Haywood <da...@apache.org>
Authored: Fri Nov 22 12:34:27 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Fri Nov 22 12:34:27 2013 +0000

----------------------------------------------------------------------
 .../metamodel/layoutmetadata/MemberRepr.java    |  1 +
 .../layoutmetadata/RenderFacetRepr.java         | 23 +++++++++
 .../json/LayoutMetadataReaderFromJson.java      | 10 ++++
 .../members/order/MemberOrderFacetFactory.java  | 10 ++--
 .../members/resolve/RenderFacetProperties.java  | 41 +++++++++++++++
 .../RenderOrResolveAnnotationFacetFactory.java  | 52 +++++++++++++++-----
 .../PagedOnParentedCollectionFacetFactory.java  | 21 ++++----
 ...MetadataReaderFromJsonTest_readMetadata.java |  9 +++-
 .../json/ExampleDomainObject.layout.json        |  9 +++-
 .../json/ExampleDomainObject.layout.properties  |  3 ++
 .../dom/src/main/java/dom/todo/ToDoItem.java    |  1 -
 .../src/main/java/dom/todo/ToDoItem.layout.json |  6 +++
 12 files changed, 156 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/MemberRepr.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/MemberRepr.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/MemberRepr.java
index 74a6573..a1456f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/MemberRepr.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/MemberRepr.java
@@ -22,4 +22,5 @@ public class MemberRepr {
     
     public Map<String,ActionRepr> actions;
     public PagedFacetRepr paged;
+    public RenderFacetRepr render;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/RenderFacetRepr.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/RenderFacetRepr.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/RenderFacetRepr.java
new file mode 100644
index 0000000..0daf872
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/RenderFacetRepr.java
@@ -0,0 +1,23 @@
+/**
+ *  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.layoutmetadata;
+
+import org.apache.isis.applib.annotation.Render;
+
+public class RenderFacetRepr {
+    public Render.Type value;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
index 4765cda..874d27c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
@@ -34,6 +34,8 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
 import org.apache.isis.applib.annotation.MemberGroupLayout.ColumnSpans;
+import org.apache.isis.applib.annotation.Render;
+import org.apache.isis.applib.annotation.Render.Type;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
 import org.apache.isis.core.commons.lang.ClassExtensions;
@@ -47,6 +49,7 @@ import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
 import org.apache.isis.core.metamodel.layoutmetadata.MemberGroupRepr;
 import org.apache.isis.core.metamodel.layoutmetadata.MemberRepr;
 import org.apache.isis.core.metamodel.layoutmetadata.PagedFacetRepr;
+import org.apache.isis.core.metamodel.layoutmetadata.RenderFacetRepr;
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecifications;
@@ -142,6 +145,13 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
                 props.setProperty("member." + memberName + ".paged.value", ""+paged.value);
             }
 
+            final RenderFacetRepr render = memberRepr.render;
+            if(render != null) {
+                // same default as in Render.Type.value()
+                final Type renderType = render.value!=null?render.value: Render.Type.EAGERLY;
+                props.setProperty("member." + memberName + ".render.value", renderType.toString());
+            }
+            
             final Map<String, ActionRepr> actions = memberRepr.actions;
             if(actions != null) {
                 int actSeq = 0;

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
index fd9efe1..ef8ce40 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
@@ -41,10 +41,7 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract implements Con
         
         MemberOrderFacet memberOrderFacet = createFromMetadataPropertiesIfPossible(processMethodContext);
         if(memberOrderFacet == null) {
-            final MemberOrder annotation = Annotations.getAnnotation(processMethodContext.getMethod(), MemberOrder.class);
-            if (annotation != null) {
-                memberOrderFacet = new MemberOrderFacetAnnotation(annotation.name(), annotation.sequence(), processMethodContext.getFacetHolder());
-            }
+            memberOrderFacet = createFromAnnotationIfPossible(processMethodContext);
         }
 
         // no-op if facet is null
@@ -74,5 +71,10 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract implements Con
         return memberOrderFacet;
     }
 
+    private static MemberOrderFacet createFromAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
+        final MemberOrder annotation = Annotations.getAnnotation(processMethodContext.getMethod(), MemberOrder.class);
+        return annotation != null ? new MemberOrderFacetAnnotation(annotation.name(), annotation.sequence(), processMethodContext.getFacetHolder()) : null;
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderFacetProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderFacetProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderFacetProperties.java
new file mode 100644
index 0000000..f0bbeae
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderFacetProperties.java
@@ -0,0 +1,41 @@
+/*
+ *  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.progmodel.facets.members.resolve;
+
+import java.util.Properties;
+
+import org.apache.isis.applib.annotation.Render;
+import org.apache.isis.applib.annotation.Render.Type;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.members.resolve.RenderFacetAbstract;
+
+public class RenderFacetProperties extends RenderFacetAbstract {
+
+    public RenderFacetProperties(final Properties properties, FacetHolder holder) {
+        super(renderTypeFrom(properties), holder);
+    }
+
+    private static Type renderTypeFrom(Properties properties) {
+        String value = properties.getProperty("value");
+        // same default as in Render.Type.value()
+        return value != null? Render.Type.valueOf(value): Render.Type.EAGERLY;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderOrResolveAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderOrResolveAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderOrResolveAnnotationFacetFactory.java
index bf401d4..7329dfe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderOrResolveAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/resolve/RenderOrResolveAnnotationFacetFactory.java
@@ -19,15 +19,19 @@
 
 package org.apache.isis.core.progmodel.facets.members.resolve;
 
+import java.util.Properties;
+
 import org.apache.isis.applib.annotation.Render;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.resolve.RenderFacet;
 
-public class RenderOrResolveAnnotationFacetFactory extends FacetFactoryAbstract {
+public class RenderOrResolveAnnotationFacetFactory extends FacetFactoryAbstract 
+        implements ContributeeMemberFacetFactory {
 
     public RenderOrResolveAnnotationFacetFactory() {
         super(FeatureType.MEMBERS);
@@ -35,21 +39,47 @@ public class RenderOrResolveAnnotationFacetFactory extends FacetFactoryAbstract
 
     @Override
     public void process(final ProcessMethodContext processMethodContext) {
-        final Render renderAnnotation = Annotations.getAnnotation(processMethodContext.getMethod(), Render.class);
-        FacetUtil.addFacet(create(renderAnnotation, processMethodContext.getFacetHolder()));
+        
+        RenderFacet renderFacet = createFromMetadataPropertiesIfPossible(processMethodContext);
+        if(renderFacet == null) {
+            renderFacet = createFromRenderAnnotationIfPossible(processMethodContext);
+        }
+        if(renderFacet == null) {
+            renderFacet = createFromResolveAnnotationIfPossible(processMethodContext);
+        }
 
-        @SuppressWarnings("deprecation")
-        final org.apache.isis.applib.annotation.Resolve resolveAnnotation = Annotations.getAnnotation(processMethodContext.getMethod(), org.apache.isis.applib.annotation.Resolve.class);
-        FacetUtil.addFacet(create(resolveAnnotation, processMethodContext.getFacetHolder()));
+        // no-op if null
+        FacetUtil.addFacet(renderFacet);
     }
 
-    private RenderFacet create(final Render annotation, final FacetHolder holder) {
-        return annotation == null ? null : new RenderFacetAnnotation(holder, annotation.value());
+    @Override
+    public void process(ProcessContributeeMemberContext processMemberContext) {
+        RenderFacet renderFacet = createFromMetadataPropertiesIfPossible(processMemberContext);
+        // no-op if null
+        FacetUtil.addFacet(renderFacet);
     }
 
-    @SuppressWarnings("deprecation")
-    private RenderFacet create(final org.apache.isis.applib.annotation.Resolve annotation, final FacetHolder holder) {
-        return annotation == null ? null : new RenderFacetViaResolveAnnotation(holder, annotation.value());
+    private static RenderFacet createFromMetadataPropertiesIfPossible(
+            final ProcessContextWithMetadataProperties<? extends FacetHolder> pcwmp) {
+        
+        final FacetHolder holder = pcwmp.getFacetHolder();
+        
+        final Properties properties = pcwmp.metadataProperties("render");
+        return properties != null ? new RenderFacetProperties(properties, holder) : null;
     }
 
+    private static RenderFacet createFromRenderAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
+        RenderFacet renderFacet;
+        final Render renderAnnotation = Annotations.getAnnotation(processMethodContext.getMethod(), Render.class);
+        renderFacet = renderAnnotation == null ? null : new RenderFacetAnnotation(processMethodContext.getFacetHolder(), renderAnnotation.value());
+        return renderFacet;
+    }
+
+    // @Render was originally called @Resolve, so look for that annotation instead.
+    @SuppressWarnings("deprecation")
+    private static RenderFacet createFromResolveAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
+        final org.apache.isis.applib.annotation.Resolve resolveAnnotation = 
+        Annotations.getAnnotation(processMethodContext.getMethod(), org.apache.isis.applib.annotation.Resolve.class);
+        return resolveAnnotation == null ? null : new RenderFacetViaResolveAnnotation(processMethodContext.getFacetHolder(), resolveAnnotation.value());
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/paged/PagedOnParentedCollectionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/paged/PagedOnParentedCollectionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/paged/PagedOnParentedCollectionFacetFactory.java
index 8c0407d..08be26e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/paged/PagedOnParentedCollectionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/paged/PagedOnParentedCollectionFacetFactory.java
@@ -42,7 +42,11 @@ public class PagedOnParentedCollectionFacetFactory extends FacetFactoryAbstract
 
     @Override
     public void process(final ProcessMethodContext processMethodContext) {
-        final PagedFacet pagedFacet = create(processMethodContext);
+        
+        PagedFacet pagedFacet = createFromMetadataPropertiesIfPossible(processMethodContext);
+        if(pagedFacet == null) {
+            pagedFacet = createFromPagedAnnotationIfPossible(processMethodContext);
+        }
         // no-op if null
         FacetUtil.addFacet(pagedFacet);
     }
@@ -54,21 +58,16 @@ public class PagedOnParentedCollectionFacetFactory extends FacetFactoryAbstract
         FacetUtil.addFacet(pagedFacet);
     }
 
-    protected PagedFacet create(final ProcessMethodContext processMethodContext) {
-
-        PagedFacet pagedFacet = createFromMetadataPropertiesIfPossible(processMethodContext);
-        if(pagedFacet != null) {
-            return pagedFacet;
-        }
+    private PagedFacet createFromMetadataPropertiesIfPossible(final ProcessContextWithMetadataProperties<?> processMethodContext) {
+        final Properties properties = processMethodContext.metadataProperties("paged");
+        return properties != null ? new PagedFacetProperties(properties, processMethodContext.getFacetHolder()) : null;
+    }
 
+    private PagedFacet createFromPagedAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
         final Paged annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Paged.class);
         return annotation != null ? new PagedFacetAnnotation(processMethodContext.getFacetHolder(), annotation.value()) : null;
     }
 
-    private PagedFacet createFromMetadataPropertiesIfPossible(final ProcessContextWithMetadataProperties<?> processMethodContext) {
-        final Properties properties = processMethodContext.metadataProperties("paged");
-        return properties != null ? new PagedFacetProperties(properties, processMethodContext.getFacetHolder()) : null;
-    }
 
     // //////////////////////////////////////
 

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
index 76855f3..468939a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJsonTest_readMetadata.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertThat;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.applib.annotation.Render;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadata;
 
 public class LayoutMetadataReaderFromJsonTest_readMetadata {
@@ -62,7 +63,13 @@ public class LayoutMetadataReaderFromJsonTest_readMetadata {
         assertThat(metadata.getColumns().get(3).collections.get("dependencies").actions.size(), is(2));
         assertThat(metadata.getColumns().get(3).collections.get("dependencies").actions.containsKey("add"), is(true));
         assertThat(metadata.getColumns().get(3).collections.get("dependencies").paged, is(not(nullValue())));
-        assertThat(metadata.getColumns().get(3).collections.get("dependencies").paged.value, is(5));
+        assertThat(metadata.getColumns().get(3).collections.get("dependencies").paged, is(not(nullValue())));
+        assertThat(metadata.getColumns().get(3).collections.get("dependencies").render, is(not(nullValue())));
+        assertThat(metadata.getColumns().get(3).collections.get("dependencies").render.value, is(nullValue()));
+        
+        assertThat(metadata.getColumns().get(3).collections.containsKey("similarItems"), is(true));
+        assertThat(metadata.getColumns().get(3).collections.get("similarItems").render, is(not(nullValue())));
+        assertThat(metadata.getColumns().get(3).collections.get("similarItems").render.value, is(Render.Type.LAZILY));
 
         assertThat(metadata.getActions(), is(not(nullValue())));
         assertThat(metadata.getActions().size(), is(2));

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.json
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.json b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.json
index f73b167..a74ca0d 100644
--- a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.json
+++ b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.json
@@ -72,9 +72,14 @@
                 },
                 paged: {
                     value: 5
-                }
+                },
+                render: {}
             },
-            similarItems: {}
+            similarItems: {
+                render: {
+                    value: LAZILY
+                }
+            }
         }
     }
     ],

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
index 4b86193..5d1f3bb 100644
--- a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
+++ b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
@@ -58,7 +58,10 @@ member.attachment.memberOrder.sequence=8
 #Collections
 member.dependencies.memberOrder.sequence=9
 member.dependencies.paged.value=5
+member.dependencies.render.value=EAGERLY
+
 member.similarItems.memberOrder.sequence=10
+member.similarItems.render.value=LAZILY
 
 
 #Actions (freestanding)

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/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 7b96700..5d68cab 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
@@ -464,7 +464,6 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3
 
     @SortedBy(DependenciesComparator.class)
     @Disabled
-    @Render(Type.EAGERLY)
     public SortedSet<ToDoItem> getDependencies() {
         return dependencies;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/0da0070f/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
index 2cce6c9..cbfd86d 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
@@ -81,11 +81,17 @@
                 },
                 paged: {
                     value: 5
+                },
+                render: {
+                    value: EAGERLY
                 }
             },
             similarTo: {
                 paged: {
                     value: 3
+                },
+                render: {
+                    value: LAZILY
                 }
             }
         }