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/05/24 09:33:16 UTC

git commit: ISIS-410: support @Render(EAGERLY) in RO viewer for collections

Updated Branches:
  refs/heads/master 6f486b1d0 -> 81955752e


ISIS-410: support @Render(EAGERLY) in RO viewer for collections


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

Branch: refs/heads/master
Commit: 81955752e5f8786b7776169c5b05b1d9efcf5d32
Parents: 6f486b1
Author: Dan Haywood <da...@apache.org>
Authored: Fri May 24 08:31:29 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Fri May 24 08:31:29 2013 +0100

----------------------------------------------------------------------
 .../domainobjects/DomainObjectReprRenderer.java    |    5 ++++-
 .../ObjectCollectionReprRenderer.java              |   15 +++++++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/81955752/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index dc51bb7..eefb967 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -20,11 +20,13 @@ import java.util.List;
 
 import org.codehaus.jackson.node.NullNode;
 
+import org.apache.isis.applib.annotation.Render.Type;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.members.resolve.RenderFacet;
 import org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
@@ -130,7 +132,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
 
         // title
         if (!mode.representsArguments()) {
-            final String title = objectAdapter.titleString();
+            final String title = objectAdapter.titleString(null);
             representation.mapPut("title", title);
 
         }
@@ -352,6 +354,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
             final TitleFacet titleFacet = objectSpec.getFacet(TitleFacet.class);
             final String title = titleFacet.title(objectAdapter, resourceContext.getLocalization());
             JsonRepresentation ref = DomainObjectReprRenderer.newLinkToBuilder(resourceContext, Rel.VALUE, objectAdapter).withTitle(title).build();
+            
             repr.mapPut("value", ref);
         }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/81955752/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
index 4d777b5..4a7371a 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
@@ -19,10 +19,13 @@ package org.apache.isis.viewer.restfulobjects.rendering.domainobjects;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.isis.applib.annotation.Render;
+import org.apache.isis.applib.annotation.Render.Type;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
+import org.apache.isis.core.metamodel.facets.members.resolve.RenderFacet;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
 import org.apache.isis.viewer.restfulobjects.applib.Rel;
@@ -66,14 +69,22 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
         if (valueAdapter == null) {
             return;
         }
+        
+        final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class);
+        boolean eagerlyRender = renderFacet != null && renderFacet.value() == Type.EAGERLY;
 
         final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(valueAdapter);
         final List<JsonRepresentation> list = Lists.newArrayList();
         for (final ObjectAdapter elementAdapter : facet.iterable(valueAdapter)) {
 
-            final LinkBuilder newBuilder = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, elementAdapter);
+            final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, elementAdapter);
+            if(eagerlyRender) {
+                final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), getLinkFollowSpecs(), JsonRepresentation.newMap());
+                renderer.with(elementAdapter);
+                valueLinkBuilder.withValue(renderer.render());
+            }
 
-            list.add(newBuilder.build());
+            list.add(valueLinkBuilder.build());
         }
 
         representation.mapPut("value", list);