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 2011/10/24 13:54:13 UTC

svn commit: r1188099 - in /incubator/isis/trunk/framework: tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/ tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/ viewer/json/json-applib/src/main/java/org/apache/isis/v...

Author: danhaywood
Date: Mon Oct 24 11:54:12 2011
New Revision: 1188099

URL: http://svn.apache.org/viewvc?rev=1188099&view=rev
Log:
ISIS-109: changes for v0.48 of spec; fixes for void action/non-idempotent action/action taking ref as param

Added:
    incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/DomainObjectRepresentationTest.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/domainObjectRepresentation.json
Modified:
    incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java
    incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntityRepository.java
    incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java
    incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java
    incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/RuntimeExceptionMapper.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java
    incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java

Modified: incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java (original)
+++ incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntity.java Mon Oct 24 11:54:12 2011
@@ -41,7 +41,6 @@ public class SimpleEntity extends Abstra
     }
     // }}
 
-
     // {{ Flag (boolean)
     private Boolean flag;
 
@@ -170,11 +169,4 @@ public class SimpleEntity extends Abstra
     }
     // }}
 
-
-    
-
-
-
-
-
 }

Modified: incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntityRepository.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntityRepository.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntityRepository.java (original)
+++ incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/simples/SimpleEntityRepository.java Mon Oct 24 11:54:12 2011
@@ -37,10 +37,13 @@ public interface SimpleEntityRepository 
     public SimpleEntity newTransientEntity();
 
     @Idempotent
-    @MemberOrder(sequence="2")
+    @MemberOrder(sequence="3")
     public SimpleEntity newPersistentEntity(
         @Named("name") String name, 
         @Named("flag") Boolean flag);
 
+    @MemberOrder(sequence="4")
+    public void toggle(
+        @Named("object") SimpleEntity object);
 
 }

Modified: incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java (original)
+++ incubator/isis/trunk/framework/tck/tck-objstore-dflt/src/main/java/org/apache/isis/tck/objstore/dflt/simples/SimpleEntityRepositoryDefault.java Mon Oct 24 11:54:12 2011
@@ -47,6 +47,11 @@ public class SimpleEntityRepositoryDefau
         getContainer().persist(entity);
         return entity;
     }
+
+    @Override
+    public void toggle(SimpleEntity object) {
+        object.setFlag(!object.getFlag());
+    }
     
 
 }

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java Mon Oct 24 11:54:12 2011
@@ -965,9 +965,6 @@ public class JsonRepresentation {
         }
         Path path = Path.parse(key);
         ObjectNode node = JsonNodeUtils.walkNodeUpTo(asObjectNode(), path.getHead());
-        if(node.has(path.getTail())) {
-            throw new IllegalStateException("already has key " + key);
-        }
         node.put(path.getTail(), value.asJsonNode());
     }
 

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/domainobjects/DomainObjectRepresentation.java Mon Oct 24 11:54:12 2011
@@ -47,15 +47,32 @@ public class DomainObjectRepresentation 
     public JsonRepresentation getMembers() {
         return getArray("members");
     }
+
+    public JsonRepresentation getProperty(final String id) {
+        return getRepresentation("members[memberType=property id=%s]", id);
+    }
 
     public JsonRepresentation getProperties() {
         return getRepresentation("members[memberType=property]");
     }
-
+
+    public JsonRepresentation getCollection(final String id) {
+        return getRepresentation("members[memberType=collection id=%s]", id);
+    }
+
+    public JsonRepresentation getCollections() {
+        return getRepresentation("members[memberType=collection]");
+    }
+
     public JsonRepresentation getActions() {
         return getRepresentation("members[memberType=action]");
     }
-    
+
+    public JsonRepresentation getAction(final String id) {
+        return getRepresentation("members[memberType=action id=%s]", id);
+    }
+
+
     public JsonRepresentation getLinks() {
         return getArray("links");
     }
@@ -63,5 +80,4 @@ public class DomainObjectRepresentation 
         return getMap("extensions");
     }
 
-
 }

Added: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/DomainObjectRepresentationTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/DomainObjectRepresentationTest.java?rev=1188099&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/DomainObjectRepresentationTest.java (added)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/java/org/apache/isis/viewer/json/applib/DomainObjectRepresentationTest.java Mon Oct 24 11:54:12 2011
@@ -0,0 +1,52 @@
+/*
+ *  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.viewer.json.applib;
+
+import static org.apache.isis.viewer.json.applib.JsonUtils.readJson;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.io.IOException;
+
+import org.apache.isis.viewer.json.applib.domainobjects.DomainObjectRepresentation;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DomainObjectRepresentationTest {
+
+    private DomainObjectRepresentation representation;
+    
+    @Before
+    public void setUp() throws Exception {
+        representation = new DomainObjectRepresentation(readJson("domainObjectRepresentation.json"));
+    }
+    
+
+    @Test
+    public void xx() throws JsonParseException, JsonMappingException, IOException {
+        final JsonRepresentation flag = representation.getProperty("flag");
+        assertThat(flag, is(not(nullValue())));
+        assertThat(flag.getBoolean("value"), is(true));
+    }
+
+}

Added: incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/domainObjectRepresentation.json
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/domainObjectRepresentation.json?rev=1188099&view=auto
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/domainObjectRepresentation.json (added)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/test/resources/org/apache/isis/viewer/json/applib/domainObjectRepresentation.json Mon Oct 24 11:54:12 2011
@@ -0,0 +1,238 @@
+{
+    "oid": "OID:25",
+    "title": "Untitled Simple Entity",
+    "members": [
+        {
+            "id": "ABigDecimal",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/ABigDecimal",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/ABigDecimal",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "ABigInteger",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/ABigInteger",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/ABigInteger",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "ADouble",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/ADouble",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "value": 0,
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/ADouble",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "ALong",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/ALong",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "value": 0,
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/ALong",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "anInt",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/anInt",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "value": 0,
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/anInt",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "anotherDouble",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/anotherDouble",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/anotherDouble",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "anotherInt",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/anotherInt",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/anotherInt",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "anotherLong",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/anotherLong",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/anotherLong",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "flag",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/flag",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "value": true,
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/flag",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "name",
+            "memberType": "property",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/properties/name",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectproperty\""
+            },
+            "value": "New name",
+            "extensions": {},
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/properties/name",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeproperty\""
+                }
+            ]
+        },
+        {
+            "id": "toggle",
+            "memberType": "action",
+            "details": {
+                "rel": "details",
+                "href": "http://localhost:8080/objects/OID:25/actions/toggle",
+                "method": "GET",
+                "type": "application/json;profile=\"urn:org.restfulobjects/objectaction\""
+            },
+            "extensions": {
+                "actionType": "user",
+                "actionSemantics": "sideEffects"
+            },
+            "links": [
+                {
+                    "rel": "describedby",
+                    "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity/actions/toggle",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/typeaction\""
+                },
+                {
+                    "rel": "contributedBy",
+                    "href": "http://localhost:8080/objects/OID:5",
+                    "method": "GET",
+                    "type": "application/json;profile=\"urn:org.restfulobjects/domainobject\""
+                }
+            ]
+        }
+    ],
+    "links": [
+        {
+            "rel": "describedby",
+            "href": "http://localhost:8080/domainTypes/org.apache.isis.tck.dom.simples.SimpleEntity",
+            "method": "GET",
+            "type": "application/json;profile=\"urn:org.restfulobjects/domaintype\""
+        }
+    ],
+    "extensions": {}
+}
\ No newline at end of file

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/invoke/DomainServiceResourceTest_invokeAction.java Mon Oct 24 11:54:12 2011
@@ -22,6 +22,7 @@ import static org.hamcrest.CoreMatchers.
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
 
 import java.io.IOException;
 
@@ -113,8 +114,54 @@ public class DomainServiceResourceTest_i
         RestfulResponse<DomainObjectRepresentation> restfulResponse = RestfulResponse.ofT(response);
         final DomainObjectRepresentation objectRepr = restfulResponse.getEntity();
         
-        assertThat(objectRepr.getRepresentation("members[propertyId=%s].value", "name").asString(), is("New Name"));
-        assertThat(objectRepr.getRepresentation("members[propertyId=%s].value", "flag").asBoolean(), is(true));
+        assertThat(objectRepr.getProperty("name").getString("value"), is("New Name"));
+        assertThat(objectRepr.getProperty("flag").getBoolean("value"), is(true));
+    }
+
+    @Test
+    public void invokeNonIdempotent_returningVoid_withReferenceArgs_usingClientFollow() throws Exception {
+
+        // given simple entity with 'flag' property set to true
+        final Link linkToSimpleEntity = givenLinkToSimpleEntity(0);
+        final Response responseBefore = client.follow(linkToSimpleEntity);
+        final RestfulResponse<DomainObjectRepresentation> restfulResponseBefore = RestfulResponse.ofT(responseBefore);
+        final DomainObjectRepresentation simpleEntityBefore = restfulResponseBefore.getEntity();
+        assertThat(simpleEntityBefore.getProperty("flag").getBoolean("value"), is(true));
+
+        // and given 'toggle' action on repo
+        JsonRepresentation givenAction = givenAction("simples", "toggle");
+        final ObjectActionRepresentation actionRepr = givenAction.as(ObjectActionRepresentation.class);
+        
+        // when
+        final Link invokeLink = actionRepr.getInvoke();
+        
+        // then
+        assertThat(invokeLink, is(not(nullValue())));
+        
+        final JsonRepresentation args = invokeLink.getArguments();
+        assertThat(args.size(), is(1));
+        assertThat(args.mapHas("object"), is(true));
+        
+        // when
+        args.mapPut("object", linkToSimpleEntity);
+        final Response response = client.follow(invokeLink, args);
+        
+        // then
+        RestfulResponse<JsonRepresentation> restfulResponse = RestfulResponse.ofT(response);
+        assertThat(restfulResponse.getStatus(), is(HttpStatusCode.NO_CONTENT));
+
+        // and then simple entity 'flag' property set to false
+        final Response responseAfter = client.follow(linkToSimpleEntity);
+        final RestfulResponse<DomainObjectRepresentation> restfulResponseAfter = RestfulResponse.ofT(responseAfter);
+        final DomainObjectRepresentation simpleEntityAfter = restfulResponseAfter.getEntity();
+        assertThat(simpleEntityAfter.getProperty("flag").getBoolean("value"), is(false));
+    }
+
+
+    @org.junit.Ignore("todo")
+    @Test
+    public void invoke_returningScalar_withReferenceArgs_usingClientFollow() throws Exception {
+        fail();
     }
 
     @org.junit.Ignore("up to here")
@@ -152,13 +199,13 @@ public class DomainServiceResourceTest_i
         final String href = givenHrefToService(serviceId);
         
         final RestfulRequest request = 
-                client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[actionId=%s].details", actionId);
+                client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[id=%s].details", actionId);
         final RestfulResponse<DomainObjectRepresentation> restfulResponse = request.executeT();
 
         assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
         final DomainObjectRepresentation repr = restfulResponse.getEntity();
         
-        JsonRepresentation actionLinkRepr = repr.getRepresentation("members[actionId=%s]", actionId);
+        JsonRepresentation actionLinkRepr = repr.getAction(actionId);
         return actionLinkRepr.getRepresentation("details.value");
     }
 
@@ -171,5 +218,22 @@ public class DomainServiceResourceTest_i
         return services.getRepresentation("values[key=%s]", serviceId).asLink().getHref();
     }
 
+    private Link givenLinkToSimpleEntity(int num) throws JsonParseException, JsonMappingException, IOException, Exception {
+        // given
+        JsonRepresentation givenAction = givenAction("simples", "list");
+        final ObjectActionRepresentation actionRepr = givenAction.as(ObjectActionRepresentation.class);
+        
+        // when
+        final Link invokeLink = actionRepr.getInvoke();
+        
+        // then
+        final Response response = client.follow(invokeLink);
+        RestfulResponse<ListRepresentation> restfulResponse = RestfulResponse.ofT(response);
+        final ListRepresentation listRepr = restfulResponse.getEntity();
+        
+        return listRepr.getValues().arrayGet(num).asLink();
+    }
+
+
 }
     
\ No newline at end of file

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/test/java/org/apache/isis/viewer/json/tck/resources/service/serviceId/DomainServiceResourceTest_serviceId_xrofollowlinks.java Mon Oct 24 11:54:12 2011
@@ -63,7 +63,7 @@ public class DomainServiceResourceTest_s
         final String href = givenHrefToService("simples");
         
         final RestfulRequest request = 
-                client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[actionId=%s].details", "list");
+                client.createRequest(HttpMethod.GET, href).withArg(QueryParameter.FOLLOW_LINKS, "members[id=%s].details", "list");
         final RestfulResponse<DomainObjectRepresentation> restfulResponse = request.executeT();
 
         assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
@@ -74,11 +74,11 @@ public class DomainServiceResourceTest_s
         
         JsonRepresentation actionRepr;
         
-        actionRepr = membersList.getRepresentation("[actionId=%s]", "list");
+        actionRepr = membersList.getRepresentation("[id=%s]", "list");
         assertThat(actionRepr.getRepresentation("details"), is(not(nullValue())));
         assertThat(actionRepr.getRepresentation("details.value"), is(not(nullValue()))); // followed
         
-        actionRepr = membersList.getRepresentation("[actionId=%s]", "newTransientEntity");
+        actionRepr = membersList.getRepresentation("[id=%s]", "newTransientEntity");
         assertThat(actionRepr.getRepresentation("details"), is(not(nullValue())));
         assertThat(actionRepr.getRepresentation("details.value"), is(nullValue())); // not followed
     }

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/RuntimeExceptionMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/RuntimeExceptionMapper.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/RuntimeExceptionMapper.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/RuntimeExceptionMapper.java Mon Oct 24 11:54:12 2011
@@ -60,7 +60,7 @@ public class RuntimeExceptionMapper impl
         private ExceptionPojo causedBy;
 
         public ExceptionPojo(Throwable ex) {
-            this.message = ex.getMessage();
+            this.message = messageFor(ex);
             StackTraceElement[] stackTraceElements = ex.getStackTrace();
             for (StackTraceElement stackTraceElement : stackTraceElements) {
                 this.stackTrace.add(format(stackTraceElement));
@@ -71,6 +71,11 @@ public class RuntimeExceptionMapper impl
             }
         }
 
+        private static String messageFor(Throwable ex) {
+            final String message = ex.getMessage();
+            return message!=null?message:ex.getClass().getName();
+        }
+
         @SuppressWarnings("unused")
         public String getMessage() {
             return message;

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/ResourceAbstract.java Mon Oct 24 11:54:12 2011
@@ -184,28 +184,34 @@ public abstract class ResourceAbstract {
     // Responses
     // //////////////////////////////////////////////////////////////
 
-    public static ResponseBuilder responseOf(HttpStatusCode httpStatusCode) {
-        return Response.status(httpStatusCode.getJaxrsStatusType()).type(MediaType.APPLICATION_JSON_TYPE);
+    public static ResponseBuilder responseOfNoContent(Version version) {
+        final ResponseBuilder response = responseOf(HttpStatusCode.NO_CONTENT);
+        addLastModifiedIfAvailable(response, version);
+        return response;
     }
 
-    public static ResponseBuilder responseOfNoContent(Version version) {
-        return responseOf(HttpStatusCode.NO_CONTENT).lastModified(version.getTime());
+    public static ResponseBuilder responseOfOk(ReprRenderer<?,?> renderer, Caching caching) {
+        return responseOfOk(renderer, caching, null);
     }
 
-    public static ResponseBuilder responseOfOk(RepresentationType representationType, Caching caching, String representation) {
-        return responseOf(HttpStatusCode.OK)
+    public static ResponseBuilder responseOfOk(ReprRenderer<?,?> renderer, Caching caching, Version version) {
+        RepresentationType representationType = renderer.getRepresentationType();
+        final ResponseBuilder response = responseOf(HttpStatusCode.OK)
                 .type(representationType.getMediaType())
                 .cacheControl(caching.getCacheControl())
-                .entity(representation);
+                .entity(jsonFor(renderer.render()));
+        return addLastModifiedIfAvailable(response, version);
     }
 
-    public static ResponseBuilder responseOfOk(RepresentationType representationType, Caching caching, JsonRepresentation representation) {
-        return responseOfOk(representationType, caching, jsonFor(representation));
+    private static ResponseBuilder responseOf(HttpStatusCode httpStatusCode) {
+        return Response.status(httpStatusCode.getJaxrsStatusType()).type(MediaType.APPLICATION_JSON_TYPE);
     }
 
-    public static ResponseBuilder responseOfOk(Caching caching, ReprRenderer<?,?> renderer) {
-        RepresentationType representationType = renderer.getRepresentationType();
-        return responseOfOk(representationType, caching, renderer.render());
+    private static ResponseBuilder addLastModifiedIfAvailable(final ResponseBuilder responseBuilder, Version version) {
+        if(version!=null) {
+            responseBuilder.lastModified(version.getTime());
+        }
+        return responseBuilder;
     }
 
 

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/capabilities/CapabilitiesResourceServerside.java Mon Oct 24 11:54:12 2011
@@ -55,7 +55,7 @@ public class CapabilitiesResourceServers
                 (CapabilitiesReprRenderer) factory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.includesSelf();
         
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
     private void fakeRuntimeExceptionIfXFail() {

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainObjectResourceServerside.java Mon Oct 24 11:54:12 2011
@@ -78,7 +78,7 @@ public class DomainObjectResourceServers
                 (DomainObjectReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.with(objectAdapter);
         
-        ResponseBuilder respBuilder = responseOfOk(Caching.NONE, renderer);
+        ResponseBuilder respBuilder = responseOfOk(renderer, Caching.NONE);
         
         Version version = objectAdapter.getVersion();
         if (version != null && version.getTime() != null) {

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainResourceHelper.java Mon Oct 24 11:54:12 2011
@@ -93,7 +93,7 @@ public class DomainResourceHelper {
         
         renderer.with(new ObjectAndProperty(objectAdapter, property));
         
-        return ResourceAbstract.responseOfOk(caching, renderer).build();
+        return ResourceAbstract.responseOfOk(renderer, caching).build();
     }
 
     // //////////////////////////////////////////////////////////////
@@ -112,7 +112,7 @@ public class DomainResourceHelper {
                 .withSelf()
                 .withMutatorsIfEnabled();
 
-        return ResourceAbstract.responseOfOk(Caching.NONE, renderer).build();
+        return ResourceAbstract.responseOfOk(renderer, Caching.NONE).build();
     }
 
     
@@ -251,7 +251,7 @@ public class DomainResourceHelper {
             final ListReprRenderer renderer = (ListReprRenderer) factory.newRenderer(resourceContext, null, representation);
             renderer.with(collectionAdapters);
             
-            return ResourceAbstract.responseOfOk(Caching.NONE, renderer).build();
+            return ResourceAbstract.responseOfOk(renderer, Caching.NONE).build();
         }
 
         
@@ -264,7 +264,7 @@ public class DomainResourceHelper {
 
             ScalarValueReprRenderer renderer = (ScalarValueReprRenderer) factory.newRenderer(resourceContext, null, representation);
             renderer.with(objectAdapter);
-            return ResourceAbstract.responseOfOk(Caching.NONE, renderer).build();
+            return ResourceAbstract.responseOfOk(renderer, Caching.NONE).build();
         }
 
         
@@ -273,7 +273,7 @@ public class DomainResourceHelper {
         final DomainObjectReprRenderer renderer = (DomainObjectReprRenderer) factory.newRenderer(resourceContext, null, representation);
         renderer.with(returnedAdapter);
         
-        ResponseBuilder respBuilder = ResourceAbstract.responseOfOk(Caching.NONE, renderer);
+        ResponseBuilder respBuilder = ResourceAbstract.responseOfOk(renderer, Caching.NONE);
         
         Version version = returnedAdapter.getVersion();
         if (version != null && version.getTime() != null) {
@@ -386,10 +386,10 @@ public class DomainResourceHelper {
         ObjectAssociation association = objectAdapter.getSpecification()
                 .getAssociation(propertyId);
         if (association == null || !association.isOneToOneAssociation()) {
-            throwNotFoundException(propertyId, MemberType.OBJECT_PROPERTY);
+            throwNotFoundException(propertyId, MemberType.PROPERTY);
         }
         OneToOneAssociation property = (OneToOneAssociation) association;
-        return memberThatIsVisibleAndUsable(objectAdapter, property, MemberType.OBJECT_PROPERTY,
+        return memberThatIsVisibleAndUsable(objectAdapter, property, MemberType.PROPERTY,
                 intent);
     }
 
@@ -401,10 +401,10 @@ public class DomainResourceHelper {
         ObjectAssociation association = objectAdapter.getSpecification()
                 .getAssociation(collectionId);
         if (association == null || !association.isOneToManyAssociation()) {
-            throwNotFoundException(collectionId, MemberType.OBJECT_COLLECTION);
+            throwNotFoundException(collectionId, MemberType.COLLECTION);
         }
         OneToManyAssociation collection = (OneToManyAssociation) association;
-        return memberThatIsVisibleAndUsable(objectAdapter, collection, MemberType.OBJECT_COLLECTION,
+        return memberThatIsVisibleAndUsable(objectAdapter, collection, MemberType.COLLECTION,
                 intent);
     }
 
@@ -415,10 +415,10 @@ public class DomainResourceHelper {
 
         ObjectAction action = objectAdapter.getSpecification().getObjectAction(actionId);
         if (action == null) {
-            throwNotFoundException(actionId, MemberType.OBJECT_ACTION);
+            throwNotFoundException(actionId, MemberType.ACTION);
         }
         
-        return memberThatIsVisibleAndUsable(objectAdapter, action, MemberType.OBJECT_ACTION, intent);
+        return memberThatIsVisibleAndUsable(objectAdapter, action, MemberType.ACTION, intent);
     }
 
     protected <T extends ObjectMember> T memberThatIsVisibleAndUsable(

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/DomainServiceResourceServerside.java Mon Oct 24 11:54:12 2011
@@ -60,7 +60,7 @@ public class DomainServiceResourceServer
                 .withSelf("services")
                 .with(serviceAdapters);
         
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
     ////////////////////////////////////////////////////////////
@@ -85,7 +85,7 @@ public class DomainServiceResourceServer
                     .includesSelf()
                     .with(serviceAdapter);
         
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
 

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domainobjects/MemberType.java Mon Oct 24 11:54:12 2011
@@ -42,7 +42,7 @@ import com.google.common.collect.Immutab
 
 public enum MemberType {
 
-    OBJECT_PROPERTY("properties/", "propertyId", Rel.DETAILS, RepresentationType.OBJECT_PROPERTY, 
+    PROPERTY("properties/", "id", Rel.DETAILS, RepresentationType.OBJECT_PROPERTY, 
             ImmutableMap.of(
                 "modify", MutatorSpec.of(Rel.MODIFY, PropertyValidateFacet.class, PropertySetterFacet.class, HttpMethod.PUT, BodyArgs.ONE),
                 "clear", MutatorSpec.of(Rel.CLEAR, PropertyValidateFacet.class, PropertyClearFacet.class, HttpMethod.DELETE, BodyArgs.NONE)
@@ -55,7 +55,7 @@ public enum MemberType {
     /**
      * {@link #getMutators()} are keyed by {@link CollectionSemantics#getAddToKey()}
      */
-    OBJECT_COLLECTION("collections/", "collectionId", Rel.DETAILS, RepresentationType.OBJECT_COLLECTION, 
+    COLLECTION("collections/", "id", Rel.DETAILS, RepresentationType.OBJECT_COLLECTION, 
             ImmutableMap.of(
                 "addToSet", MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.PUT, BodyArgs.ONE),
                 "addToList", MutatorSpec.of(Rel.ADD_TO, CollectionValidateAddToFacet.class, CollectionAddToFacet.class, HttpMethod.POST, BodyArgs.ONE),
@@ -69,7 +69,7 @@ public enum MemberType {
     /**
      * {@link #getMutators()} are keyed by {@link ActionSemantics#getInvokeKey()}
      */
-    OBJECT_ACTION("actions/", "actionId", Rel.DETAILS, RepresentationType.OBJECT_ACTION,
+    ACTION("actions/", "id", Rel.DETAILS, RepresentationType.OBJECT_ACTION,
             ImmutableMap.of(
                 "invokeQueryOnly", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.GET, BodyArgs.MANY, "invoke"),
                 "invokeIdempotent", MutatorSpec.of(Rel.INVOKE, ActionValidationFacet.class, ActionInvocationFacet.class, HttpMethod.PUT, BodyArgs.MANY, "invoke"),
@@ -115,15 +115,15 @@ public enum MemberType {
     public abstract ObjectSpecification specFor(ObjectMember objectMember);
 
     public boolean isProperty() {
-        return this == MemberType.OBJECT_PROPERTY;
+        return this == MemberType.PROPERTY;
     }
 
     public boolean isCollection() {
-        return this == MemberType.OBJECT_COLLECTION;
+        return this == MemberType.COLLECTION;
     }
 
     public boolean isAction() {
-        return this == MemberType.OBJECT_ACTION;
+        return this == MemberType.ACTION;
     }
 
     public static MemberType lookup(final String memberTypeName) {
@@ -137,10 +137,10 @@ public enum MemberType {
 
 	public static MemberType of(ObjectMember objectMember) {
 		return objectMember.isAction()?
-				OBJECT_ACTION:
+				ACTION:
 					objectMember.isOneToOneAssociation()?
-						OBJECT_PROPERTY:
-						OBJECT_COLLECTION;
+						PROPERTY:
+						COLLECTION;
 	}
 
     public RepresentationType getRepresentationType() {
@@ -157,13 +157,13 @@ public enum MemberType {
 
     public static MemberType determineFrom(ObjectFeature objectFeature) {
         if (objectFeature instanceof ObjectAction) {
-            return MemberType.OBJECT_ACTION;
+            return MemberType.ACTION;
         }
         if (objectFeature instanceof OneToOneAssociation) {
-            return MemberType.OBJECT_PROPERTY;
+            return MemberType.PROPERTY;
         }
         if (objectFeature instanceof OneToManyAssociation) {
-            return MemberType.OBJECT_COLLECTION;
+            return MemberType.COLLECTION;
         }
         return null;
     }

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/domaintypes/DomainTypeResourceServerside.java Mon Oct 24 11:54:12 2011
@@ -66,7 +66,7 @@ public class DomainTypeResourceServersid
                 (DomainTypesReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.with(allSpecifications).includesSelf();
         
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
     
@@ -86,7 +86,7 @@ public class DomainTypeResourceServersid
                 (DomainTypeReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.with(objectSpec).includesSelf();
 
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
     @GET
@@ -116,7 +116,7 @@ public class DomainTypeResourceServersid
                 (TypePropertyReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.with(new SpecAndProperty(objectSpec, property)).includesSelf();
 
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
     @GET
@@ -146,7 +146,7 @@ public class DomainTypeResourceServersid
                 (TypeCollectionReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.with(new SpecAndCollection(objectSpec, collection)).includesSelf();
 
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
     @GET
@@ -176,7 +176,7 @@ public class DomainTypeResourceServersid
                 (TypeActionReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.with(new SpecAndAction(objectSpec, action)).includesSelf();
 
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
     @GET
@@ -209,7 +209,7 @@ public class DomainTypeResourceServersid
                 (TypeActionParamReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.with(new SpecAndActionParam(objectSpec, actionParam)).includesSelf();
 
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
 }
\ No newline at end of file

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/home/HomePageResourceServerside.java Mon Oct 24 11:54:12 2011
@@ -47,7 +47,7 @@ public class HomePageResourceServerside 
                 (HomePageReprRenderer) factory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
         renderer.includesSelf();
 
-        return responseOfOk(Caching.ONE_DAY, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_DAY).build();
     }
 
 }
\ No newline at end of file

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java?rev=1188099&r1=1188098&r2=1188099&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/resources/user/UserResourceServerside.java Mon Oct 24 11:54:12 2011
@@ -43,7 +43,7 @@ public class UserResourceServerside exte
         renderer.includesSelf()
                 .with(getAuthenticationSession());
 
-        return responseOfOk(Caching.ONE_HOUR, renderer).build();
+        return responseOfOk(renderer, Caching.ONE_HOUR).build();
     }