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/11 00:08:05 UTC

[1/6] isis git commit: ISIS-1232: resurrecting support for x-ro-follow-links (for table grids, at least)

Repository: isis
Updated Branches:
  refs/heads/master 06630df77 -> a7d82eb38


ISIS-1232: resurrecting support for x-ro-follow-links (for table grids, at least)


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

Branch: refs/heads/master
Commit: 0df5504adca6539b36f57fc3fff615e2c0bd84b5
Parents: de21335
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Nov 7 10:20:40 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Nov 7 10:20:40 2015 +0000

----------------------------------------------------------------------
 .../domainobjects/DomainObjectReprRenderer.java    | 17 ++++++++++-------
 .../ObjectCollectionReprRenderer.java              | 12 +++++++-----
 .../domainobjects/ObjectPropertyReprRenderer.java  | 12 ++++++++----
 .../rendering/LinkFollowSpecsTest_follow.java      | 14 ++++++++++++++
 .../restfulobjects/server/ResourceContext.java     |  8 +++++---
 5 files changed, 44 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/0df5504a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index d96a01e..e1d0ac2 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -152,7 +152,9 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
         }
 
         // members
-        withMembers(objectAdapter);
+        if(!mode.isUpdatePropertiesLinkArgs()) {
+            withMembers(objectAdapter);
+        }
 
         // described by
         if (mode.includeDescribedBy() && !rendererContext.suppressDescribedByLinks()) {
@@ -225,7 +227,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
         addProperties(objectAdapter, appendTo, associations);
 
         if(!rendererContext.objectPropertyValuesOnly()) {
-            if (!mode.isArgs()) {
+            if (!mode.isArgs() ) {
                 addCollections(objectAdapter, appendTo, associations);
             }
 
@@ -241,7 +243,6 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
     }
 
     private void addProperties(final ObjectAdapter objectAdapter, final JsonRepresentation members, final List<ObjectAssociation> associations) {
-        final LinkFollowSpecs linkFollower = getLinkFollowSpecs().follow("members");
         for (final ObjectAssociation assoc : associations) {
 
             if (mode.checkVisibility()) {
@@ -255,7 +256,8 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
             }
 
             final OneToOneAssociation property = (OneToOneAssociation) assoc;
-            final ObjectPropertyReprRenderer renderer = new ObjectPropertyReprRenderer(getRendererContext(), linkFollower, property.getId(), JsonRepresentation.newMap());
+            final LinkFollowSpecs linkFollowerForProp = getLinkFollowSpecs().follow("members[" + property.getId() + "]");
+            final ObjectPropertyReprRenderer renderer = new ObjectPropertyReprRenderer(getRendererContext(), linkFollowerForProp, property.getId(), JsonRepresentation.newMap());
             renderer.with(new ObjectAndProperty(objectAdapter, property)).usingLinkTo(linkToBuilder);
 
             if (mode.isArgs()) {
@@ -274,7 +276,6 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
     }
 
     private void addCollections(final ObjectAdapter objectAdapter, final JsonRepresentation members, final List<ObjectAssociation> associations) {
-        final LinkFollowSpecs linkFollower = getLinkFollowSpecs().follow("members");
         for (final ObjectAssociation assoc : associations) {
 
             if (mode.checkVisibility()) {
@@ -290,7 +291,9 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
 
             final OneToManyAssociation collection = (OneToManyAssociation) assoc;
 
-            final ObjectCollectionReprRenderer renderer = new ObjectCollectionReprRenderer(getRendererContext(), linkFollower, collection.getId(), JsonRepresentation.newMap());
+            final LinkFollowSpecs linkFollowerForColl = getLinkFollowSpecs().follow(
+                    "members[" + collection.getId() + "]");
+            final ObjectCollectionReprRenderer renderer = new ObjectCollectionReprRenderer(getRendererContext(), linkFollowerForColl, collection.getId(), JsonRepresentation.newMap());
 
             renderer.with(new ObjectAndCollection(objectAdapter, collection)).usingLinkTo(linkToBuilder);
             if(mode.isEventSerialization()) {
@@ -364,7 +367,7 @@ public class DomainObjectReprRenderer extends ReprRendererAbstract<DomainObjectR
         final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), null, JsonRepresentation.newMap());
         final JsonRepresentation domainObjectRepr = renderer.with(objectAdapter).asUpdatePropertiesLinkArguments().render();
 
-        if(!rendererContext.suppressUpdateLink()) {
+        if(!getRendererContext().suppressUpdateLink()) {
             final LinkBuilder updateLinkBuilder = LinkBuilder.newBuilder(getRendererContext(), Rel.UPDATE.getName(), RepresentationType.DOMAIN_OBJECT, "objects/%s/%s", getDomainType(), getInstanceId()).withHttpMethod(RestfulHttpMethod.PUT).withArguments(domainObjectRepr);
             getLinks().arrayAdd(updateLinkBuilder.build());
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/0df5504a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
index 09a9214..22de842 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectCollectionReprRenderer.java
@@ -54,10 +54,11 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
 
         renderMemberContent();
 
-        boolean eagerlyRender = rendererContext.honorUiHints() && renderEagerly();
+        final LinkFollowSpecs followValue = getLinkFollowSpecs().follow("value");
+        boolean eagerlyRender = rendererContext.honorUiHints() && renderEagerly() || !followValue.isTerminated();
 
         if ((mode.isInline() && eagerlyRender) || mode.isStandalone() || mode.isMutated() || mode.isEventSerialization() || !objectAdapter.representsPersistent()) {
-            addValue();
+            addValue(followValue);
         }
         if(!mode.isEventSerialization()) {
             putDisabledReasonIfDisabled();
@@ -79,13 +80,14 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
     // value
     // ///////////////////////////////////////////////////
 
-    private void addValue() {
+    private void addValue(final LinkFollowSpecs linkFollower) {
         final ObjectAdapter valueAdapter = objectMember.get(objectAdapter, getInteractionInitiatedBy());
         if (valueAdapter == null) {
             return;
         }
 
-        boolean eagerlyRender = rendererContext.honorUiHints() && renderEagerly(valueAdapter);
+        final LinkFollowSpecs followHref = linkFollower.follow("href");
+        boolean eagerlyRender = rendererContext.honorUiHints() && renderEagerly(valueAdapter) || !followHref.isTerminated();
 
         final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(valueAdapter);
         final List<JsonRepresentation> list = Lists.newArrayList();
@@ -93,7 +95,7 @@ public class ObjectCollectionReprRenderer extends AbstractObjectMemberReprRender
 
             final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, elementAdapter);
             if(eagerlyRender) {
-                final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), getLinkFollowSpecs(), JsonRepresentation.newMap());
+                final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(getRendererContext(), followHref, JsonRepresentation.newMap());
                 renderer.with(elementAdapter);
                 if(mode.isEventSerialization()) {
                     renderer.asEventSerialization();

http://git-wip-us.apache.org/repos/asf/isis/blob/0df5504a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index 72fcc07..8e77441 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -61,7 +61,10 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
     public JsonRepresentation render() {
 
         renderMemberContent();
-        addValue();
+
+        final LinkFollowSpecs followValue = getLinkFollowSpecs().follow("value");
+
+        addValue(followValue);
 
         putDisabledReasonIfDisabled();
 
@@ -77,7 +80,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
     // value
     // ///////////////////////////////////////////////////
 
-    private Object addValue() {
+    private Object addValue(final LinkFollowSpecs linkFollower) {
         final ObjectAdapter valueAdapter = objectMember.get(objectAdapter, getInteractionInitiatedBy());
         
         // use the runtime type if we have a value, else the compile time type of the member otherwise
@@ -112,7 +115,8 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
         }
 
         final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class);
-        boolean eagerlyRender = renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter);
+        boolean eagerlyRender =
+                renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter) || !linkFollower.isTerminated();
 
         if(valueAdapter == null) {
             final NullNode value = NullNode.getInstance();
@@ -124,7 +128,7 @@ public class ObjectPropertyReprRenderer extends AbstractObjectMemberReprRenderer
             
             final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer.newLinkToBuilder(rendererContext, Rel.VALUE, valueAdapter).withTitle(title);
             if(eagerlyRender) {
-                final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(rendererContext, getLinkFollowSpecs(), JsonRepresentation.newMap());
+                final DomainObjectReprRenderer renderer = new DomainObjectReprRenderer(rendererContext, linkFollower, JsonRepresentation.newMap());
                 renderer.with(valueAdapter);
                 if(mode.isEventSerialization()) {
                     renderer.asEventSerialization();

http://git-wip-us.apache.org/repos/asf/isis/blob/0df5504a/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowSpecsTest_follow.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowSpecsTest_follow.java b/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowSpecsTest_follow.java
index 97b447c..41f7789 100644
--- a/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowSpecsTest_follow.java
+++ b/core/viewer-restfulobjects-rendering/src/test/java/org/apache/isis/viewer/restfulobjects/rendering/LinkFollowSpecsTest_follow.java
@@ -197,6 +197,20 @@ public class LinkFollowSpecsTest_follow {
         assertThat(followRelVersion.follow("x").isFollowing(), is(true));
     }
 
+    @Test
+    public void example_of_eager_loading_of_collection() throws Exception {
+        final List<List<String>> links = asListOfLists("members[children].value");
+
+        final LinkFollowSpecs linkFollower = LinkFollowSpecs.create(links);
+
+        LinkFollowSpecs followMembers = linkFollower.follow("members[children]");
+        assertThat(followMembers.isFollowing(), is(true));
+        assertThat(followMembers.isTerminated(), is(false));
+
+        assertThat(followMembers.follow("value").isFollowing(), is(true));
+        assertThat(followMembers.follow("value").isTerminated(), is(false));
+    }
+
 
     private List<List<String>> asListOfLists(final String string) {
         return Parser.forListOfListOfStrings().valueOf(string);

http://git-wip-us.apache.org/repos/asf/isis/blob/0df5504a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
index ae59797..149d638 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/ResourceContext.java
@@ -197,12 +197,14 @@ public class ResourceContext implements RendererContext5 {
             final JsonRepresentation map = JsonRepresentation.newMap();
             for(String paramName: params.keySet()) {
                 String paramValue = params.get(paramName)[0];
+                // this is rather hacky :-(
+                final String key = paramName.startsWith("x-ro") ? paramName : paramName + ".value";
                 try {
-                    // this is rather hacky
+                    // and this is even more hacky :-(
                     int paramValueAsInt = Integer.parseInt(paramValue);
-                    map.mapPut(paramName+".value", paramValueAsInt);
+                    map.mapPut(key, paramValueAsInt);
                 } catch(Exception ex) {
-                    map.mapPut(paramName+".value", stripQuotes(paramValue));
+                    map.mapPut(key, stripQuotes(paramValue));
                 }
             }
             return map;


[5/6] isis git commit: ISIS-1243: bumping simpleapp to use 1.11.0-SNAPSHOT

Posted by da...@apache.org.
ISIS-1243: bumping simpleapp to use 1.11.0-SNAPSHOT


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

Branch: refs/heads/master
Commit: eb5dae4a3ec9deac617306ffe915802a9ca9d876
Parents: 6e0ec97
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 10 23:06:27 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 10 23:06:27 2015 +0000

----------------------------------------------------------------------
 example/application/simpleapp/app/pom.xml        | 2 +-
 example/application/simpleapp/dom/pom.xml        | 2 +-
 example/application/simpleapp/fixture/pom.xml    | 2 +-
 example/application/simpleapp/integtests/pom.xml | 2 +-
 example/application/simpleapp/pom.xml            | 4 ++--
 example/application/simpleapp/webapp/pom.xml     | 2 +-
 6 files changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/eb5dae4a/example/application/simpleapp/app/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/app/pom.xml b/example/application/simpleapp/app/pom.xml
index 0b4f495..9f34621 100644
--- a/example/application/simpleapp/app/pom.xml
+++ b/example/application/simpleapp/app/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.isis.example.application</groupId>
         <artifactId>simpleapp</artifactId>
-        <version>1.10.0-SNAPSHOT</version>
+        <version>1.11.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>simpleapp-app</artifactId>

http://git-wip-us.apache.org/repos/asf/isis/blob/eb5dae4a/example/application/simpleapp/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/pom.xml b/example/application/simpleapp/dom/pom.xml
index 0b26e14..7cee148 100644
--- a/example/application/simpleapp/dom/pom.xml
+++ b/example/application/simpleapp/dom/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.isis.example.application</groupId>
         <artifactId>simpleapp</artifactId>
-        <version>1.10.0-SNAPSHOT</version>
+        <version>1.11.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>simpleapp-dom</artifactId>

http://git-wip-us.apache.org/repos/asf/isis/blob/eb5dae4a/example/application/simpleapp/fixture/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/fixture/pom.xml b/example/application/simpleapp/fixture/pom.xml
index b77c24e..aee749d 100644
--- a/example/application/simpleapp/fixture/pom.xml
+++ b/example/application/simpleapp/fixture/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.isis.example.application</groupId>
         <artifactId>simpleapp</artifactId>
-        <version>1.10.0-SNAPSHOT</version>
+        <version>1.11.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>simpleapp-fixture</artifactId>

http://git-wip-us.apache.org/repos/asf/isis/blob/eb5dae4a/example/application/simpleapp/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/integtests/pom.xml b/example/application/simpleapp/integtests/pom.xml
index 263b21d..0569a13 100644
--- a/example/application/simpleapp/integtests/pom.xml
+++ b/example/application/simpleapp/integtests/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.isis.example.application</groupId>
         <artifactId>simpleapp</artifactId>
-        <version>1.10.0-SNAPSHOT</version>
+        <version>1.11.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>simpleapp-integtests</artifactId>

http://git-wip-us.apache.org/repos/asf/isis/blob/eb5dae4a/example/application/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index ff67e85..6a7582b 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -23,7 +23,7 @@
 
     <groupId>org.apache.isis.example.application</groupId>
     <artifactId>simpleapp</artifactId>
-    <version>1.10.0-SNAPSHOT</version>
+    <version>1.11.0-SNAPSHOT</version>
 
     <name>Simple App</name>
 
@@ -34,7 +34,7 @@
     </prerequisites>
 
     <properties>
-        <isis.version>1.10.0</isis.version>
+        <isis.version>1.11.0-SNAPSHOT</isis.version>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

http://git-wip-us.apache.org/repos/asf/isis/blob/eb5dae4a/example/application/simpleapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/pom.xml b/example/application/simpleapp/webapp/pom.xml
index 7b1c591..e81c6a5 100644
--- a/example/application/simpleapp/webapp/pom.xml
+++ b/example/application/simpleapp/webapp/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.isis.example.application</groupId>
         <artifactId>simpleapp</artifactId>
-        <version>1.10.0-SNAPSHOT</version>
+        <version>1.11.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>simpleapp-webapp</artifactId>


[3/6] isis git commit: ISIS-1242: fixing breadcrumb model so can change title.

Posted by da...@apache.org.
ISIS-1242: fixing breadcrumb model so can change title.


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

Branch: refs/heads/master
Commit: c492e3584da95e484772ca4536fb3ad29013a2b5
Parents: 49474d7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 9 22:50:09 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 10 16:46:56 2015 +0000

----------------------------------------------------------------------
 .../model/mementos/PageParameterNames.java      |  2 +-
 .../widgets/breadcrumbs/BreadcrumbModel.java    | 99 +++++++++++++-------
 .../widgets/breadcrumbs/BreadcrumbPanel.java    | 11 +--
 3 files changed, 65 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c492e358/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
index 75f1a64..77617c3 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
@@ -86,7 +86,7 @@ public enum PageParameterNames {
 
     /**
      * Returns the {@link #name()} formatted as
-     * {@link Strings#camelCase(String) camel case}.
+     * {@link StringExtensions#asCamel(String) camel case}.
      * 
      * <p>
      * For example, <tt>ACTION_TYPE</tt> becomes <tt>actionType</tt>.

http://git-wip-us.apache.org/repos/asf/isis/blob/c492e358/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 6f58943..b3e5e94 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
@@ -26,6 +26,10 @@ import com.google.common.collect.Maps;
 
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 
@@ -36,7 +40,6 @@ public class BreadcrumbModel implements Serializable {
     private static final int MAX_SIZE = 5;
 
     private final Map<String, EntityModel> entityModelByOidStr = Maps.newHashMap();
-    private final Map<EntityModel, String> titleByEntityModel = Maps.newHashMap();
     private final Map<EntityModel, String> oidStrByEntityModel = Maps.newHashMap();
     private final List<EntityModel> list = Lists.newArrayList();
     
@@ -51,33 +54,38 @@ public class BreadcrumbModel implements Serializable {
             return;
         }
 
-        final String oidStr = oidStrFor(entityModel);
+        final String oidStr = oidStrFrom(entityModel);
         
-        removeExisting(oidStr);
+        remove(oidStr);
         addToStart(oidStr, entityModel);
         
         trimTo(MAX_SIZE);
     }
 
-    private String oidStrFor(final EntityModel entityModel) {
+    private String oidStrFrom(final EntityModel entityModel) {
         final PageParameters pageParameters = entityModel.getPageParametersWithoutUiHints();
-        return PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
+        return oidStrFrom(pageParameters);
+    }
+
+    private String oidStrFrom(final PageParameters pageParameters) {
+        String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
+        if(oidStr == null) {
+            return null;
+        }
+        try {
+            final RootOid unmarshal = getOidMarshaller().unmarshal(oidStr, RootOid.class);
+            return unmarshal.enStringNoVersion(getOidMarshaller());
+        } catch(Exception ex) {
+            return null;
+        }
     }
 
     private void addToStart(final String oidStr, final EntityModel entityModel) {
         entityModelByOidStr.put(oidStr, entityModel);
-        titleByEntityModel.put(entityModel, entityModel.getTitle());
         oidStrByEntityModel.put(entityModel, oidStr);
         list.add(0, entityModel);
     }
 
-    private void removeExisting(final String oidStr) {
-        final EntityModel existingModel = entityModelByOidStr.get(oidStr);
-        if(existingModel != null) {
-            remove(oidStr, existingModel);
-        }
-    }
-
     private void trimTo(final int size) {
         if(list.size() <= size) {
             return;
@@ -89,42 +97,61 @@ public class BreadcrumbModel implements Serializable {
         }
     }
 
-    private void remove(final String oidStr, final EntityModel model) {
-        entityModelByOidStr.remove(oidStr);
-        titleByEntityModel.remove(model);
-        oidStrByEntityModel.remove(model);
-        list.remove(model);
+    public String titleFor(final EntityModel model) {
+        return model.getObjectAdapterMemento().getObjectAdapter(AdapterManager.ConcurrencyChecking.NO_CHECK).titleString(null);
     }
 
-    public void remove(String oidStr) {
-        EntityModel removedModel = entityModelByOidStr.remove(oidStr);
-        if(removedModel != null) {
-            remove(removedModel);
+    public EntityModel lookup(final String oidStr) {
+        if(oidStr == null) {
+            return null;
         }
+        return entityModelByOidStr.get(oidStr);
     }
 
-    public void remove(EntityModel entityModel) {
-        String oidStr = oidStrByEntityModel.get(entityModel);
-        if(oidStr != null) {
-            remove(oidStr, entityModel);
+    public void detach() {
+        for (EntityModel entityModel : list) {
+            entityModel.detach();
         }
     }
 
-    public String titleFor(final EntityModel model) {
-        return titleByEntityModel.get(model);
+    public Object getId(final EntityModel choice) {
+        try {
+            final PageParameters pageParameters = choice.getPageParameters();
+            final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
+            return RootOid.deString(oidStr, getOidMarshaller());
+        } catch (Exception ex) {
+            remove(choice);
+            return null;
+        }
+
     }
 
-    public EntityModel lookup(String oidStr) {
-        if(oidStr == null) {
-            return null;
+
+    void remove(final String rootOid) {
+        final EntityModel existingModel = entityModelByOidStr.get(rootOid);
+        if(existingModel != null) {
+            remove(rootOid, existingModel);
         }
-        final EntityModel entityModel = entityModelByOidStr.get(oidStr);
-        return entityModel;
     }
 
-    public void detach() {
-        for (EntityModel entityModel : list) {
-            entityModel.detach();
+    public void remove(final EntityModel entityModel) {
+        final String oidStr = oidStrByEntityModel.get(entityModel);
+        if(oidStr != null) {
+            remove(oidStr, entityModel);
         }
     }
+
+    private void remove(final String rootOid, final EntityModel model) {
+        entityModelByOidStr.remove(rootOid);
+        oidStrByEntityModel.remove(model);
+        list.remove(model);
+    }
+
+
+
+    protected OidMarshaller getOidMarshaller() {
+        return IsisContext.getOidMarshaller();
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/c492e358/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 84b16c6..50c7367 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
@@ -27,7 +27,6 @@ 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;
@@ -35,7 +34,6 @@ 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;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
@@ -70,14 +68,7 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
 
             @Override
             protected Object getId(EntityModel choice) {
-                try {
-                    final PageParameters pageParameters = choice.getPageParameters();
-                    final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
-                    return oidStr;
-                } catch (Exception ex) {
-                    breadcrumbModel.remove(choice);
-                    return null;
-                }
+                return breadcrumbModel.getId(choice);
             }
 
             @Override


[2/6] isis git commit: Merge branch 'ISIS-1232'

Posted by da...@apache.org.
Merge branch 'ISIS-1232'


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

Branch: refs/heads/master
Commit: 49474d7f62e5199c95aa516c30e271c6b36acc8b
Parents: 06630df 0df5504
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 10 16:46:19 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 10 16:46:19 2015 +0000

----------------------------------------------------------------------
 .../domainobjects/DomainObjectReprRenderer.java    | 17 ++++++++++-------
 .../ObjectCollectionReprRenderer.java              | 12 +++++++-----
 .../domainobjects/ObjectPropertyReprRenderer.java  | 12 ++++++++----
 .../rendering/LinkFollowSpecsTest_follow.java      | 14 ++++++++++++++
 .../restfulobjects/server/ResourceContext.java     |  8 +++++---
 5 files changed, 44 insertions(+), 19 deletions(-)
----------------------------------------------------------------------



[6/6] isis git commit: ISIS-1244: extended RepresentationService to specify intent when render object (either JUST_CREATED or ALREADY_PERSISTENT)

Posted by da...@apache.org.
ISIS-1244: extended RepresentationService to specify intent when render object (either JUST_CREATED or ALREADY_PERSISTENT)


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

Branch: refs/heads/master
Commit: a7d82eb3864e4f0ad205249b329479c6010cda05
Parents: eb5dae4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 10 23:07:28 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 10 23:07:28 2015 +0000

----------------------------------------------------------------------
 .../service/RepresentationService.java          | 23 +++++++++++++++++++-
 .../RepresentationServiceForRestfulObjects.java | 13 +++++++++++
 .../DomainObjectResourceServerside.java         |  7 ++++--
 .../server/resources/DomainResourceHelper.java  | 15 ++++++++++++-
 .../server/resources/ResourceAbstract.java      |  1 +
 5 files changed, 55 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
index b49fcf4..30fa1b7 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationService.java
@@ -47,12 +47,33 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
  */
 public interface RepresentationService {
 
+    public enum Intent {
+        /**
+         * ie return a 201
+         */
+        JUST_CREATED,
+        /**
+         * ie return a 200
+         */
+        ALREADY_PERSISTENT
+    }
+
+    /**
+     * @deprecated - use {@link #objectRepresentation(Context, ObjectAdapter, Intent)}.
+     */
+    @Deprecated
     @Programmatic
     Response objectRepresentation(
             Context resourceContext,
             ObjectAdapter objectAdapter);
 
     @Programmatic
+    Response objectRepresentation(
+            Context resourceContext,
+            ObjectAdapter objectAdapter,
+            Intent intent);
+
+    @Programmatic
     Response propertyDetails(
             Context rendererContext,
             ObjectAndProperty objectAndProperty,
@@ -87,7 +108,7 @@ public interface RepresentationService {
     public static interface Context4 extends Context3, RendererContext4 {
         InteractionInitiatedBy getInteractionInitiatedBy();
     }
-    public static interface Context5 extends Context3, RendererContext5 {
+    public static interface Context5 extends Context4, RendererContext5 {
         public SpecificationLoader getSpecificationLoader();
         public ServicesInjector getServicesInjector();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
index adaad37..7ca8374 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceForRestfulObjects.java
@@ -60,6 +60,15 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
     public Response objectRepresentation(
             final Context rendererContext,
             final ObjectAdapter objectAdapter) {
+        return objectRepresentation(rendererContext, objectAdapter, Intent.ALREADY_PERSISTENT);
+    }
+
+    @Override
+    @Programmatic
+    public Response objectRepresentation(
+            final Context rendererContext,
+            final ObjectAdapter objectAdapter,
+            final Intent intent) {
 
         ResponseBuilder responseBuilder = null;
 
@@ -90,6 +99,10 @@ public class RepresentationServiceForRestfulObjects implements RepresentationSer
             }
         }
 
+        if(intent == Intent.JUST_CREATED) {
+            responseBuilder.status(Response.Status.CREATED);
+        }
+
         return buildResponse(responseBuilder);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
index 8531a59..75691d9 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainObjectResourceServerside.java
@@ -47,6 +47,7 @@ import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpS
 import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
 import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
 import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.MemberReprMode;
+import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
 import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.PrettyPrinting;
 import org.apache.isis.viewer.restfulobjects.rendering.util.Util;
 
@@ -99,9 +100,10 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
         }
         getResourceContext().getPersistenceSession().makePersistentInTransaction(objectAdapter);
 
-        return getDomainResourceHelper(objectAdapter).objectRepresentation();
+        return getDomainResourceHelper(objectAdapter).objectRepresentation(RepresentationService.Intent.JUST_CREATED);
     }
 
+
     // //////////////////////////////////////////////////////////
     // domain object
     // //////////////////////////////////////////////////////////
@@ -123,10 +125,11 @@ public class DomainObjectResourceServerside extends ResourceAbstract implements
         return getDomainResourceHelper(objectAdapter).objectRepresentation();
     }
 
-    private DomainResourceHelper getDomainResourceHelper(ObjectAdapter objectAdapter) {
+    private DomainResourceHelper getDomainResourceHelper(final ObjectAdapter objectAdapter) {
         return new DomainResourceHelper(getResourceContext(), objectAdapter);
     }
 
+
     @Override
     @PUT
     @Path("/{domainType}/{instanceId}")

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 1f652d9..da73995 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -214,9 +214,22 @@ public class DomainResourceHelper {
     /**
      * Simply delegates to the {@link org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService} to
      * render a representation of the object.
+     *
+     * @deprecated - use {@link #objectRepresentation(RepresentationService.Intent)}
      */
+    @Deprecated
     public Response objectRepresentation() {
-        return representationService.objectRepresentation(representationServiceContext, objectAdapter);
+        return representationService
+                .objectRepresentation(representationServiceContext, objectAdapter);
+    }
+
+    /**
+     * Simply delegates to the {@link org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService} to
+     * render a representation of the object.
+     */
+    public Response objectRepresentation(final RepresentationService.Intent intent) {
+        return representationService
+                .objectRepresentation(representationServiceContext, objectAdapter, intent);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/a7d82eb3/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
index 46c3e58..f8c28ee 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/ResourceAbstract.java
@@ -124,6 +124,7 @@ public abstract class ResourceAbstract {
         return resourceContext;
     }
 
+
     // //////////////////////////////////////////////////////////////
     // Isis integration
     // //////////////////////////////////////////////////////////////


[4/6] isis git commit: Merge branch 'ISIS-1242'

Posted by da...@apache.org.
Merge branch 'ISIS-1242'


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

Branch: refs/heads/master
Commit: 6e0ec9785065aca0757bf01e988359236ba98ae1
Parents: 49474d7 c492e35
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 10 16:47:09 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 10 16:47:09 2015 +0000

----------------------------------------------------------------------
 .../model/mementos/PageParameterNames.java      |  2 +-
 .../widgets/breadcrumbs/BreadcrumbModel.java    | 99 +++++++++++++-------
 .../widgets/breadcrumbs/BreadcrumbPanel.java    | 11 +--
 3 files changed, 65 insertions(+), 47 deletions(-)
----------------------------------------------------------------------