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 2014/03/28 10:28:44 UTC

[1/2] ISIS-421: starting on the RO TCK tests

Repository: isis
Updated Branches:
  refs/heads/master f19cbe239 -> 46e8aef81


http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
index b98fac6..ffd48f9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
@@ -27,6 +27,8 @@ import static org.hamcrest.CoreMatchers.nullValue;
 
 import java.util.Iterator;
 
+import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
+import org.apache.isis.core.runtime.persistence.PojoRecreationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -62,7 +64,6 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
 import org.apache.isis.core.runtime.system.persistence.OidGenerator;
@@ -308,7 +309,7 @@ public class AdapterManagerDefault implements AdapterManagerSpi {
                 final Object pojo = pojoRecreator.recreatePojo(typedOid);
                 adapter = mapRecreatedPojo(typedOid, pojo);
             } catch(RuntimeException ex) {
-                throw new ObjectNotFoundException(typedOid, ex);
+                throw new PojoRecreationException(typedOid, ex);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
index 8b97b41..e104454 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
@@ -32,7 +32,6 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
@@ -147,7 +146,7 @@ public interface ObjectStore extends DebuggableWithTitle, SessionScopedComponent
      * 
      * <p>
      * If the persistence mechanism does not known of an object with the
-     * specified {@link TypedOid} then a {@link ObjectNotFoundException} should be
+     * specified {@link TypedOid} then a {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} should be
      * thrown.
      * 
      * <p>
@@ -164,7 +163,7 @@ public interface ObjectStore extends DebuggableWithTitle, SessionScopedComponent
      * @return the requested {@link ObjectAdapter} that has the specified
      *         {@link TypedOid}.
      * 
-     * @throws ObjectNotFoundException
+     * @throws org.apache.isis.core.runtime.persistence.ObjectNotFoundException
      *             when no object corresponding to the oid can be found
      */
     ObjectAdapter loadInstanceAndAdapt(TypedOid oid);

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/example/application/quickstart_wicket_restful_jdo/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java b/example/application/quickstart_wicket_restful_jdo/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java
index eb9fe0f..02b5123 100644
--- a/example/application/quickstart_wicket_restful_jdo/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java
+++ b/example/application/quickstart_wicket_restful_jdo/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java
@@ -76,7 +76,7 @@ public class ToDoItemContributionsTest_updateCategory extends ToDoIntegTest {
     public void categoryCannotBeNull() throws Exception {
         
         // when, then
-        expectedExceptions.expectMessage("Category is mandatory");
+        expectedExceptions.expectMessage("'Category' is mandatory");
         toDoItemContributions.updateCategory(toDoItem, null, Subcategory.Chores);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/example/application/quickstart_wicket_restful_jdo/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/webapp/pom.xml b/example/application/quickstart_wicket_restful_jdo/webapp/pom.xml
index a1859ba..e415798 100644
--- a/example/application/quickstart_wicket_restful_jdo/webapp/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/webapp/pom.xml
@@ -204,7 +204,11 @@
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-servlet_2.5_spec</artifactId>
+            <!--
+            removed so can run o.a.i.WebServer from within IntelliJ;
+            can rely on servlet container to ignore this in war file
             <scope>provided</scope>
+            -->
         </dependency>
 
         <!-- 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/example/application/simple_wicket_restful_jdo/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simple_wicket_restful_jdo/webapp/pom.xml b/example/application/simple_wicket_restful_jdo/webapp/pom.xml
index 3279711..374e1d7 100644
--- a/example/application/simple_wicket_restful_jdo/webapp/pom.xml
+++ b/example/application/simple_wicket_restful_jdo/webapp/pom.xml
@@ -204,7 +204,9 @@
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-servlet_2.5_spec</artifactId>
-            <!-- 
+            <!--
+            removed so can run o.a.i.WebServer from within IntelliJ;
+            can rely on servlet container to ignore this in war file
             <scope>provided</scope>
             -->
         </dependency>

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ecc2529..5d03255 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,6 +120,20 @@
         </profile>
 
         <profile>
+            <id>security-file</id>
+            <modules>
+                <module>component/security/file</module>
+            </modules>
+        </profile>
+
+        <profile>
+            <id>security-shiro</id>
+            <modules>
+                <module>component/security/shiro</module>
+            </modules>
+        </profile>
+
+        <profile>
             <id>objectstore-jdo</id>
             <modules>
                 <module>component/objectstore/jdo</module>


[2/2] git commit: ISIS-421: starting on the RO TCK tests

Posted by da...@apache.org.
ISIS-421: starting on the RO TCK tests

RO TCK tests
- removed skip=true flag for Maven
- updated surefire config to ensure all tests run under maven
- fixed those failing
  - including fix to throw 404 instead of 200(!) for non-existing entity
- added placeholders for view models

Core changes
- subclasses of ObjectNotFoundException for clearer semantics
- AdapterManager#adapterFor can now throw new PojoRecreationException (instead of ObjectNotFoundException)
  - only caller that checks explicitly for the old ONFE - OidUtils in RO viewer - updated to also catch PojoRecEx

updated modules pom.xml to reference 1.4.2-snapshot core (parent)
- RO viewer
- shiro security
- viewer wicket

added new profiles in isis-all pom.xml for security modules
- better workflow if using IntelliJ


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

Branch: refs/heads/master
Commit: 46e8aef81a696466052ecb09c0b9049035416281
Parents: f19cbe2
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Mar 28 09:27:32 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Mar 28 09:27:32 2014 +0000

----------------------------------------------------------------------
 .../jdo/datanucleus/DataNucleusObjectStore.java |  7 +-
 component/objectstore/jdo/pom.xml               |  2 +-
 component/security/shiro/pom.xml                |  2 +-
 .../DomainObjectMemberRepresentation.java       |  2 +-
 component/viewer/restfulobjects/pom.xml         |  2 +-
 .../domainobjects/JsonValueEncoder.java         | 10 +-
 .../server/resources/DomainResourceHelper.java  |  2 +
 .../restfulobjects/server/util/OidUtils.java    | 98 ++++++++------------
 component/viewer/restfulobjects/tck/pom.xml     | 17 +++-
 .../src/main/webapp/WEB-INF/logging.properties  |  2 +-
 .../tck/any/NotAuthorizedTest_TODO.java         | 51 ++++++++++
 .../tck/any/NotAuthorized_TODO.java             | 51 ----------
 ...tentType_andContentLength_ok_TOCOMPLETE.java | 93 -------------------
 ...daProperties_thenRepresentation_ok_TODO.java |  1 +
 ...thenRepresentation_ofTitleIdLinksEtc_ok.java |  2 +-
 ...venViewModel_thenRepresentation_ok_TODO.java | 89 ++++++++++++++++++
 ...tentType_andContentLength_ok_TOCOMPLETE.java | 94 +++++++++++++++++++
 ..._givenViewModel_thenRepresentation_TODO.java | 47 ++++++++++
 ...venViewModel_thenRepresentation_ok_TODO.java | 23 +++++
 ...venViewModel_thenRepresentation_ok_TODO.java | 65 +++++++++++++
 ...venViewModel_thenRepresentation_ok_TODO.java | 23 +++++
 ...venViewModel_thenRepresentation_ok_TODO.java | 65 +++++++++++++
 .../id/action/Get_thenRepresentation_ok.java    |  6 +-
 ...MandatorySimpleArg_whenArgNullValue_bad.java |  4 +-
 .../invoke/Get_givenViewModel_ok_TODO.java      | 70 ++++++++++++++
 .../Post_givenViewModel_then_ok_TODO.java       | 63 +++++++++++++
 .../invoke/Put_givenViewModel_then_ok_TODO.java | 51 ++++++++++
 ...et_thenResponseHeaders_ContentLength_ok.java |  3 +-
 ...et_thenResponseHeaders_ContentLength_ok.java |  2 +-
 component/viewer/wicket/pom.xml                 |  2 +-
 component/viewer/wicket/tck/pom.xml             |  2 +-
 .../metamodel/adapter/mgr/AdapterManager.java   |  7 +-
 .../metamodel/adapter/oid/OidMarshaller.java    |  2 +-
 .../mandatory/MandatoryFacetAbstract.java       |  9 +-
 .../bookmarks/BookmarkServiceDefault.java       |  3 +-
 .../persistence/ObjectNotFoundException.java    | 12 +--
 .../persistence/PojoRecreationException.java    | 31 +++++++
 .../persistence/PojoRefreshException.java       | 34 +++++++
 .../core/objectstore/InMemoryObjectStore.java   |  2 +-
 .../adaptermanager/AdapterManagerDefault.java   |  5 +-
 .../runtime/system/persistence/ObjectStore.java |  5 +-
 ...oDoItemContributionsTest_updateCategory.java |  2 +-
 .../webapp/pom.xml                              |  4 +
 .../simple_wicket_restful_jdo/webapp/pom.xml    |  4 +-
 pom.xml                                         | 14 +++
 45 files changed, 833 insertions(+), 252 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
index 74fc246..d0fd657 100644
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
+++ b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
@@ -38,6 +38,8 @@ import javax.jdo.spi.PersistenceCapable;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
+import org.apache.isis.core.runtime.persistence.PojoRefreshException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -58,7 +60,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
 import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
@@ -486,13 +487,13 @@ public class DataNucleusObjectStore implements ObjectStoreSpi {
         final Object domainObject = adapter.getObject();
 		if (domainObject == null) {
 		    // REVIEW: is this possible?
-            throw new ObjectNotFoundException(adapter.getOid());
+            throw new PojoRefreshException(adapter.getOid());
         }
 
         try {
             getPersistenceManager().refresh(domainObject);
         } catch (final RuntimeException e) {
-            throw new ObjectNotFoundException(adapter.getOid(), e);
+            throw new PojoRefreshException(adapter.getOid(), e);
         }
 
         // possibly redundant because also called in the post-load event

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/objectstore/jdo/pom.xml
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/pom.xml b/component/objectstore/jdo/pom.xml
index 6b6cd2f..c0337c7 100644
--- a/component/objectstore/jdo/pom.xml
+++ b/component/objectstore/jdo/pom.xml
@@ -16,7 +16,7 @@
 	<parent>
 		<groupId>org.apache.isis.core</groupId>
 		<artifactId>isis</artifactId>
-        <version>1.4.0</version>
+        <version>1.4.2-SNAPSHOT</version>
 		<relativePath>../../../core/pom.xml</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/security/shiro/pom.xml
----------------------------------------------------------------------
diff --git a/component/security/shiro/pom.xml b/component/security/shiro/pom.xml
index 2271c49..6e63233 100644
--- a/component/security/shiro/pom.xml
+++ b/component/security/shiro/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
 		<groupId>org.apache.isis.core</groupId>
 		<artifactId>isis</artifactId>
-        <version>1.4.0</version>
+        <version>1.4.2-SNAPSHOT</version>
 		<relativePath>../../../core/pom.xml</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectMemberRepresentation.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectMemberRepresentation.java b/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectMemberRepresentation.java
index 4583a6b..6b271ce 100644
--- a/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectMemberRepresentation.java
+++ b/component/viewer/restfulobjects/applib/src/main/java/org/apache/isis/viewer/restfulobjects/applib/domainobjects/DomainObjectMemberRepresentation.java
@@ -60,7 +60,7 @@ public class DomainObjectMemberRepresentation extends DomainRepresentation  {
      * Isis-specific extension; not part of the RO API;
      */
     public String getXIsisFormat() {
-        return getString("x-isis-format");
+        return getString("extensions.x-isis-format");
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/pom.xml b/component/viewer/restfulobjects/pom.xml
index 603282f..90c0411 100644
--- a/component/viewer/restfulobjects/pom.xml
+++ b/component/viewer/restfulobjects/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.isis.core</groupId>
 		<artifactId>isis</artifactId>
-        <version>1.4.0</version>
+        <version>1.4.2-SNAPSHOT</version>
 		<relativePath>../../../core/pom.xml</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index 946296c..63d4de7 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -576,6 +576,11 @@ public final class JsonValueEncoder {
 
 
     public static ObjectAdapter asAdapter(final ObjectSpecification objectSpec, final JsonRepresentation argRepr) {
+        if(!argRepr.mapHas("value")) {
+            String reason = "No 'value' key";
+            argRepr.mapPut("invalidReason", reason);
+            throw new IllegalArgumentException(reason);
+        }
         if (objectSpec == null) {
             String reason = "ObjectSpec is null, cannot validate";
             argRepr.mapPut("invalidReason", reason);
@@ -588,11 +593,6 @@ public final class JsonValueEncoder {
             throw new IllegalArgumentException(reason);
         }
         
-        if(!argRepr.mapHas("value")) {
-            String reason = "No 'value' key";
-            argRepr.mapPut("invalidReason", reason);
-            throw new IllegalArgumentException(reason);
-        }
         final JsonRepresentation argValueRepr = argRepr.getRepresentation("value");
         if(argValueRepr == null) {
             return null;

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index 4c8a2e4..cb892af 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -346,6 +346,8 @@ public final class DomainResourceHelper {
         if (objectSpec.isEncodeable()) {
             try {
                 return JsonValueEncoder.asAdapter(objectSpec, argRepr);
+            }catch(IllegalArgumentException ex) {
+                throw ex;
             }catch(Exception ex) {
                 StringBuilder buf = new StringBuilder("Failed to parse representation ");
                 try {

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
index 91f29f0..c5bf441 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
@@ -26,6 +26,7 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
+import org.apache.isis.core.runtime.persistence.PojoRecreationException;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
 
@@ -34,80 +35,59 @@ public final class OidUtils {
     private OidUtils() {
     }
 
-    public static String getDomainType(final RendererContext renderContext, final ObjectAdapter objectAdapter) {
-        return org.apache.isis.viewer.restfulobjects.rendering.util.OidUtils.getDomainType(objectAdapter);
-    }
-
-    public static String getInstanceId(final RendererContext renderContext, final ObjectAdapter objectAdapter) {
-        return org.apache.isis.viewer.restfulobjects.rendering.util.OidUtils.getInstanceId(renderContext, objectAdapter);
-    }
-
-    // REVIEW: it's a bit hokey to join these together just to split them out again.
-    public static String joinAsOid(final String domainType, final String instanceIdEncoded) {
-        final String instanceIdUnencoded = UrlDecoderUtils.urlDecode(instanceIdEncoded);
-        return getOidMarshaller().joinAsOid(domainType, instanceIdUnencoded);
-    }
-
     /**
-     * 
-     * @return {@code null} if not found.
+     * @return {@code null} if not persistent and not a view model.
      */
-    public static ObjectAdapter getObjectAdapterElseNull(final RendererContext resourceContext, final String domainType, final String instanceId) throws ObjectNotFoundException {
-        try {
-            return getObjectAdapterElseThrowNotFound(resourceContext, domainType, instanceId);
-        } catch(ObjectNotFoundException ex) {
-            return null;
-        }
+    public static ObjectAdapter getObjectAdapterElseNull(final RendererContext resourceContext,
+                                                         final String domainType, final String instanceIdEncoded) {
+        final String instanceIdUnencoded = UrlDecoderUtils.urlDecode(instanceIdEncoded);
+        String oidStrUnencoded = getOidMarshaller().joinAsOid(domainType, instanceIdUnencoded);
+        return getObjectAdapter(resourceContext, oidStrUnencoded);
     }
 
     /**
-     * 
-     * @throws {@link ObjectNotFoundException} if not found
+     * see {@link #getObjectAdapterElseNull(org.apache.isis.viewer.restfulobjects.rendering.RendererContext, String, String)}
      */
-    public static ObjectAdapter getObjectAdapterElseThrowNotFound(final RendererContext resourceContext, final String domainType, final String instanceId) throws ObjectNotFoundException {
-        String oidStr = joinAsOid(domainType, instanceId);
-        
-        // REVIEW: this is all rather disgusting...
-        final ObjectSpecId specId = ObjectSpecId.of(domainType);
-        final ObjectSpecification spec = IsisContext.getSpecificationLoader().lookupBySpecId(specId);
-        if(spec.containsFacet(ViewModelFacet.class)) {
-            // TODO: use the static in OidMarshaller
-            oidStr = "*" + oidStr;
-        }
-
-        return getObjectAdapterForUnencodedElseThrowNotFound(resourceContext, oidStr);
+    public static ObjectAdapter getObjectAdapterElseNull(final RendererContext resourceContext, final String oidStrEncoded) {
+        String oidStrUnencoded = UrlDecoderUtils.urlDecode(oidStrEncoded);
+        return getObjectAdapter(resourceContext, oidStrUnencoded);
     }
 
-    /**
-     * 
-     * @return {@code null} if not found.
-     */
-    public static ObjectAdapter getObjectAdapterElseNull(final RendererContext resourceContext, final String oidEncodedStr) {
-        try {
-            return getObjectAdapterElseThrowNotFound(resourceContext, oidEncodedStr);
-        } catch(ObjectNotFoundException ex) {
+    private static ObjectAdapter getObjectAdapter(RendererContext resourceContext, String oidStrUnencoded) {
+        RootOidDefault rootOid = RootOidDefault.deString(oidStrUnencoded, getOidMarshaller());
+        final ObjectSpecId specId = rootOid.getObjectSpecId();
+
+        final ObjectSpecification spec = IsisContext.getSpecificationLoader().lookupBySpecId(specId);
+        if(spec == null) {
+            // eg "NONEXISTENT:123"
             return null;
         }
-    }
 
-    /**
-     * 
-     * @throws {@link ObjectNotFoundException} if not found
-     */
-    public static ObjectAdapter getObjectAdapterElseThrowNotFound(final RendererContext resourceContext, final String oidEncodedStr) {
-        final String oidStr = UrlDecoderUtils.urlDecode(oidEncodedStr);
-        return getObjectAdapterForUnencodedElseThrowNotFound(resourceContext, oidStr);
-    }
-
-    private static ObjectAdapter getObjectAdapterForUnencodedElseThrowNotFound(final RendererContext resourceContext, final String oidStr) {
-        final RootOid rootOid = RootOidDefault.deStringEncoded(oidStr, getOidMarshaller());
-        //return resourceContext.getPersistenceSession().loadObject(rootOid);
-        return resourceContext.getPersistenceSession().getAdapterManager().adapterFor(rootOid);
+        // TODO: the logic to figure out which PersistenceSession API to call should be pushed down into PersistenceSession itself.
+        if(spec.containsFacet(ViewModelFacet.class)) {
+            if(!rootOid.getIdentifier().startsWith(OidMarshaller.VIEWMODEL_INDICATOR)) {
+                // TODO: this bodge to ensure that the "*" (view model indicator) is probably not required; but leaving it in until have better test coverage
+                rootOid = RootOidDefault.create(rootOid.getObjectSpecId(), OidMarshaller.VIEWMODEL_INDICATOR + rootOid.getIdentifier());
+            }
+            try {
+                return resourceContext.getPersistenceSession().getAdapterManager().adapterFor(rootOid);
+            } catch(final ObjectNotFoundException ex) {
+                return null;
+            } catch(final PojoRecreationException ex) {
+                return null;
+            }
+        } else {
+            try {
+                ObjectAdapter objectAdapter = resourceContext.getPersistenceSession().loadObject(rootOid);
+                return objectAdapter.isTransient() ? null : objectAdapter;
+            } catch(final ObjectNotFoundException ex) {
+                return null;
+            }
+        }
     }
 
     private static OidMarshaller getOidMarshaller() {
 		return new OidMarshaller();
 	}
 
-    
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/pom.xml b/component/viewer/restfulobjects/tck/pom.xml
index d2a42f2..57f8456 100644
--- a/component/viewer/restfulobjects/tck/pom.xml
+++ b/component/viewer/restfulobjects/tck/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.isis.core</groupId>
         <artifactId>isis-core-tck</artifactId>
-        <version>1.4.0</version>
+        <version>1.4.2-SNAPSHOT</version>
         <relativePath>../../../../core/tck/pom.xml</relativePath>
     </parent>
 
@@ -35,7 +35,6 @@
 	<packaging>war</packaging>
 	
     <properties>
-        <maven.test.skip>true</maven.test.skip>
 
         <isis-viewer-restfulobjects.version>2.3.0-SNAPSHOT</isis-viewer-restfulobjects.version>
 
@@ -52,6 +51,20 @@
                 <groupId>org.mortbay.jetty</groupId>
                 <artifactId>maven-jetty-plugin</artifactId>
             </plugin>
+            
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                   <includes>
+                       <include>**/*Test_*.java</include>
+                       <include>**/Get_*.java</include>
+                       <include>**/Delete_*.java</include>
+                       <include>**/Put_*.java</include>
+                       <include>**/Post_*.java</include>
+                   </includes>
+                </configuration>
+            </plugin>
+            
 		</plugins>
 	</build>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/main/webapp/WEB-INF/logging.properties
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/main/webapp/WEB-INF/logging.properties b/component/viewer/restfulobjects/tck/src/main/webapp/WEB-INF/logging.properties
index f2d65e6..c7f605a 100644
--- a/component/viewer/restfulobjects/tck/src/main/webapp/WEB-INF/logging.properties
+++ b/component/viewer/restfulobjects/tck/src/main/webapp/WEB-INF/logging.properties
@@ -15,7 +15,7 @@
 #  specific language governing permissions and limitations
 #  under the License.
 # apache's log4j is used to provide system logging.
-log4j.rootCategory=INFO, Console
+log4j.rootCategory=WARN, Console
 
 # The console appender
 log4j.appender.Console=org.apache.log4j.ConsoleAppender

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorizedTest_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorizedTest_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorizedTest_TODO.java
new file mode 100644
index 0000000..b81203e
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorizedTest_TODO.java
@@ -0,0 +1,51 @@
+/*
+ *  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.restfulobjects.tck.any;
+
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class NotAuthorizedTest_TODO {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+    private RestfulClient client;
+
+    @Before
+    public void setUp() throws Exception {
+        client = webServerRule.getClient();
+    }
+
+    @Ignore("TODO")
+    @Test
+    public void whenAuthenticated() throws Exception {
+
+    }
+
+    @Ignore("TODO")
+    @Test
+    public void whenNotAuthenticated() throws Exception {
+     // should return 401 (13.5)
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorized_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorized_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorized_TODO.java
deleted file mode 100644
index f4b7a03..0000000
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/any/NotAuthorized_TODO.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *  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.restfulobjects.tck.any;
-
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
-import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-
-public class NotAuthorized_TODO {
-
-    @Rule
-    public IsisWebServerRule webServerRule = new IsisWebServerRule();
-    private RestfulClient client;
-
-    @Before
-    public void setUp() throws Exception {
-        client = webServerRule.getClient();
-    }
-
-    @Ignore("TODO")
-    @Test
-    public void whenAuthenticated() throws Exception {
-
-    }
-
-    @Ignore("TODO")
-    @Test
-    public void whenNotAuthenticated() throws Exception {
-     // should return 401 (13.5)
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get__thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get__thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get__thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java
deleted file mode 100644
index fc33397..0000000
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get__thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- *  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.restfulobjects.tck.domainobject.oid;
-
-import static org.apache.isis.viewer.restfulobjects.tck.RestfulMatchers.hasProfile;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import javax.ws.rs.core.Response;
-
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.core.webserver.WebServer;
-import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.Header;
-import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
-import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
-import org.apache.isis.viewer.restfulobjects.tck.Util;
-
-public class Get__thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE {
-
-    @Rule
-    public IsisWebServerRule webServerRule = new IsisWebServerRule();
-
-    protected RestfulClient client;
-
-    private DomainObjectResource domainObjectResource;
-
-    @Before
-    public void setUp() throws Exception {
-        final WebServer webServer = webServerRule.getWebServer();
-        client = new RestfulClient(webServer.getBase());
-        domainObjectResource = client.getDomainObjectResource();
-        
-    }
-
-    @Ignore("TODO")
-    @Test
-    public void usingClientFollow() throws Exception {
-
-        // todo... same as test below
-        final LinkRepresentation link = Util.domainObjectLink(client, "PrimitiveValuedEntities");
-        final DomainObjectRepresentation objRepr = client.follow(link).getEntity().as(DomainObjectRepresentation.class);
-        objRepr.getDomainType();
-        objRepr.getInstanceId();
-        
-    }
-
-    
-    @Test
-    public void usingResourceProxy() throws Exception {
-
-        // when
-        final LinkRepresentation link = Util.domainObjectLink(client, "PrimitiveValuedEntities");
-        final DomainObjectRepresentation objRepr = client.follow(link).getEntity().as(DomainObjectRepresentation.class);
-        final String domainType = objRepr.getDomainType();
-        final String instanceId = objRepr.getInstanceId();
-        
-        final Response jaxrsResponse = domainObjectResource.object(domainType,instanceId);
-        final RestfulResponse<DomainObjectRepresentation> restfulResponse = RestfulResponse.ofT(jaxrsResponse);
-        assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
-
-        // then
-        assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
-        assertThat(restfulResponse.getHeader(Header.CONTENT_TYPE), hasProfile(RestfulMediaType.APPLICATION_JSON_OBJECT));
-        assertThat(restfulResponse.getHeader(Header.CONTENT_LENGTH), is(6382));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJodaProperties_thenRepresentation_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJodaProperties_thenRepresentation_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJodaProperties_thenRepresentation_ok_TODO.java
index 77663f7..14bc180 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJodaProperties_thenRepresentation_ok_TODO.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntityWithJodaProperties_thenRepresentation_ok_TODO.java
@@ -66,6 +66,7 @@ public class Get_givenEntityWithJodaProperties_thenRepresentation_ok_TODO {
         client = new RestfulClient(webServer.getBase());
     }
 
+    @Ignore // to fix
     @Test
     public void thenMembers() throws Exception {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntity_thenRepresentation_ofTitleIdLinksEtc_ok.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntity_thenRepresentation_ofTitleIdLinksEtc_ok.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntity_thenRepresentation_ofTitleIdLinksEtc_ok.java
index 3fb5db7..2b074d8 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntity_thenRepresentation_ofTitleIdLinksEtc_ok.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenEntity_thenRepresentation_ofTitleIdLinksEtc_ok.java
@@ -89,7 +89,7 @@ public class Get_givenEntity_thenRepresentation_ofTitleIdLinksEtc_ok {
                             .href(matches(".+\\/domain-types\\/PRMV"))
                             .httpMethod(RestfulHttpMethod.GET)
                             .type(RepresentationType.DOMAIN_TYPE.getMediaType()));
-        assertThat(domainObjectRepr.getLinkWithRel(Rel.MODIFY), 
+        assertThat(domainObjectRepr.getLinkWithRel(Rel.UPDATE),
                         isLink()
                             .href(matches(".+\\/objects\\/PRMV\\/\\d+"))
                             .httpMethod(RestfulHttpMethod.PUT)

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenViewModel_thenRepresentation_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenViewModel_thenRepresentation_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenViewModel_thenRepresentation_ok_TODO.java
new file mode 100644
index 0000000..6a30b7c
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_givenViewModel_thenRepresentation_ok_TODO.java
@@ -0,0 +1,89 @@
+/*
+ *  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.restfulobjects.tck.domainobject.oid;
+
+import org.apache.isis.core.webserver.WebServer;
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status.Family;
+import java.io.IOException;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+public class Get_givenViewModel_thenRepresentation_ok_TODO {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    protected RestfulClient client;
+
+    private DomainObjectResource domainObjectResource;
+
+    @Before
+    public void setUp() throws Exception {
+        final WebServer webServer = webServerRule.getWebServer();
+        client = new RestfulClient(webServer.getBase());
+        domainObjectResource = client.getDomainObjectResource();
+        
+    }
+
+    
+    @Ignore("TODO")
+    @Test
+    public void xxx() throws Exception {
+
+        // given, when
+        final DomainObjectRepresentation domainObjectRepr = givenDomainObjectRepresentationFor("OID","xxx");
+
+        // property ('name')
+        final JsonRepresentation properties = domainObjectRepr.getProperties();
+        final JsonRepresentation nameProperty = properties.getRepresentation("name");
+        assertThat(nameProperty.getString("disabledReason"), is(not(nullValue())));
+    }
+
+
+
+
+    private DomainObjectRepresentation givenDomainObjectRepresentationFor(final String domainType, String instanceId) throws JsonParseException, JsonMappingException, IOException {
+        final DomainObjectResource domainObjectResource = client.getDomainObjectResource();
+
+        final Response domainObjectResp = domainObjectResource.object(domainType, instanceId);
+        final RestfulResponse<DomainObjectRepresentation> domainObjectJsonResp = RestfulResponse.ofT(domainObjectResp);
+        assertThat(domainObjectJsonResp.getStatus().getFamily(), is(Family.SUCCESSFUL));
+
+        final DomainObjectRepresentation domainObjectRepr = domainObjectJsonResp.getEntity();
+        return domainObjectRepr;
+    }
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java
new file mode 100644
index 0000000..d728f2f
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Get_thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE.java
@@ -0,0 +1,94 @@
+/*
+ *  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.restfulobjects.tck.domainobject.oid;
+
+import static org.apache.isis.viewer.restfulobjects.tck.RestfulMatchers.hasProfile;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.junit.Assert.assertThat;
+
+import javax.ws.rs.core.Response;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.core.webserver.WebServer;
+import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.Header;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.apache.isis.viewer.restfulobjects.tck.Util;
+
+public class Get_thenResponseCode_andContentType_andContentLength_ok_TOCOMPLETE {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    protected RestfulClient client;
+
+    private DomainObjectResource domainObjectResource;
+
+    @Before
+    public void setUp() throws Exception {
+        final WebServer webServer = webServerRule.getWebServer();
+        client = new RestfulClient(webServer.getBase());
+        domainObjectResource = client.getDomainObjectResource();
+        
+    }
+
+    @Ignore("TODO")
+    @Test
+    public void usingClientFollow() throws Exception {
+
+        // todo... same as test below
+        final LinkRepresentation link = Util.domainObjectLink(client, "PrimitiveValuedEntities");
+        final DomainObjectRepresentation objRepr = client.follow(link).getEntity().as(DomainObjectRepresentation.class);
+        objRepr.getDomainType();
+        objRepr.getInstanceId();
+        
+    }
+
+    
+    @Test
+    public void usingResourceProxy() throws Exception {
+
+        // when
+        final LinkRepresentation link = Util.domainObjectLink(client, "PrimitiveValuedEntities");
+        final DomainObjectRepresentation objRepr = client.follow(link).getEntity().as(DomainObjectRepresentation.class);
+        final String domainType = objRepr.getDomainType();
+        final String instanceId = objRepr.getInstanceId();
+        
+        final Response jaxrsResponse = domainObjectResource.object(domainType,instanceId);
+        final RestfulResponse<DomainObjectRepresentation> restfulResponse = RestfulResponse.ofT(jaxrsResponse);
+        assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
+
+        // then
+        assertThat(restfulResponse.getStatus(), is(HttpStatusCode.OK));
+        assertThat(restfulResponse.getHeader(Header.CONTENT_TYPE), hasProfile(RestfulMediaType.APPLICATION_JSON_OBJECT));
+        assertThat(restfulResponse.getHeader(Header.CONTENT_LENGTH), is(greaterThan(6000)));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_givenViewModel_thenRepresentation_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_givenViewModel_thenRepresentation_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_givenViewModel_thenRepresentation_TODO.java
new file mode 100644
index 0000000..4360965
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/Put_givenViewModel_thenRepresentation_TODO.java
@@ -0,0 +1,47 @@
+/*
+ *  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.restfulobjects.tck.domainobject.oid;
+
+import org.apache.isis.core.webserver.WebServer;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class Put_givenViewModel_thenRepresentation_TODO {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    protected RestfulClient client;
+
+    @Before
+    public void setUp() throws Exception {
+        final WebServer webServer = webServerRule.getWebServer();
+        client = new RestfulClient(webServer.getBase());
+    }
+
+    @Ignore
+    @Test
+    public void usingClientFollow() throws Exception {
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Delete_givenViewModel_thenRepresentation_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Delete_givenViewModel_thenRepresentation_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Delete_givenViewModel_thenRepresentation_ok_TODO.java
new file mode 100644
index 0000000..9a62a28
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Delete_givenViewModel_thenRepresentation_ok_TODO.java
@@ -0,0 +1,23 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid.property;
+
+public class Delete_givenViewModel_thenRepresentation_ok_TODO {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_givenViewModel_thenRepresentation_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_givenViewModel_thenRepresentation_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_givenViewModel_thenRepresentation_ok_TODO.java
new file mode 100644
index 0000000..ce2fe98
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Get_givenViewModel_thenRepresentation_ok_TODO.java
@@ -0,0 +1,65 @@
+/*
+ *  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.restfulobjects.tck.domainobject.oid.property;
+
+import org.apache.isis.core.webserver.WebServer;
+import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ObjectPropertyRepresentation;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status.Family;
+
+import static org.apache.isis.viewer.restfulobjects.tck.RestfulMatchers.*;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+public class Get_givenViewModel_thenRepresentation_ok_TODO {
+
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    protected RestfulClient client;
+    private DomainObjectResource domainObjectResource;
+
+    @Before
+    public void setUp() throws Exception {
+        final WebServer webServer = webServerRule.getWebServer();
+        client = new RestfulClient(webServer.getBase());
+        domainObjectResource = client.getDomainObjectResource();
+    }
+
+
+    @Ignore("TODO")
+    @Test
+    public void representation() throws Exception {
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_givenViewModel_thenRepresentation_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_givenViewModel_thenRepresentation_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_givenViewModel_thenRepresentation_ok_TODO.java
new file mode 100644
index 0000000..48c652e
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobject/oid/property/Put_givenViewModel_thenRepresentation_ok_TODO.java
@@ -0,0 +1,23 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.tck.domainobject.oid.property;
+
+public class Put_givenViewModel_thenRepresentation_ok_TODO {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_givenViewModel_thenRepresentation_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_givenViewModel_thenRepresentation_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_givenViewModel_thenRepresentation_ok_TODO.java
new file mode 100644
index 0000000..22dd6be
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_givenViewModel_thenRepresentation_ok_TODO.java
@@ -0,0 +1,65 @@
+/*
+ *  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.restfulobjects.tck.domainobjectorservice.id.action;
+
+import org.apache.isis.core.webserver.WebServer;
+import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.Rel;
+import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulHttpMethod;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainObjectResource;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ObjectActionRepresentation;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status.Family;
+
+import static org.apache.isis.viewer.restfulobjects.tck.RestfulMatchers.assertThat;
+import static org.apache.isis.viewer.restfulobjects.tck.RestfulMatchers.isLink;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+public class Get_givenViewModel_thenRepresentation_ok_TODO {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    protected RestfulClient client;
+    private DomainObjectResource domainObjectResource;
+
+    @Before
+    public void setUp() throws Exception {
+        final WebServer webServer = webServerRule.getWebServer();
+        client = new RestfulClient(webServer.getBase());
+        domainObjectResource = client.getDomainObjectResource();
+    }
+
+    @Ignore
+    @Test
+    public void representation() throws Exception {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_thenRepresentation_ok.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_thenRepresentation_ok.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_thenRepresentation_ok.java
index e0e74c4..2bb996f 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_thenRepresentation_ok.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/Get_thenRepresentation_ok.java
@@ -93,11 +93,11 @@ public class Get_thenRepresentation_ok {
         final LinkRepresentation invokeLink = actionPromptRepr.getLinkWithRel(Rel.INVOKE);
         assertThat(invokeLink, isLink(client)
                                 .httpMethod(RestfulHttpMethod.GET)
-                                .href(endsWith("/services/ActionsEntities/actions/contains/invoke")));
+                                .href(endsWith("/objects/RTNE/67/actions/contains/invoke")));
 
         assertThat(invokeLink.getArguments(), is(not(nullValue())));
         assertThat(invokeLink.getArguments().isArray(), is(false));
-        assertThat(invokeLink.getArguments().size(), is(3));
+        assertThat(invokeLink.getArguments().size(), is(2));
 
      // described by link
         final LinkRepresentation describedByLink = actionPromptRepr.getLinkWithRel(Rel.DESCRIBEDBY);
@@ -107,6 +107,6 @@ public class Get_thenRepresentation_ok {
 
         assertThat(actionPromptRepr.getExtensions().getString("actionType"), is("user"));
         assertThat(actionPromptRepr.getExtensions().getString("actionSemantics"), is("safe"));
-        assertThat(actionPromptRepr.getArray("parameters").size(), is(3));
+        assertThat(actionPromptRepr.getMap("parameters").size(), is(2));
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenMandatorySimpleArg_whenArgNullValue_bad.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenMandatorySimpleArg_whenArgNullValue_bad.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenMandatorySimpleArg_whenArgNullValue_bad.java
index 484f988..7e4ff51 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenMandatorySimpleArg_whenArgNullValue_bad.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenMandatorySimpleArg_whenArgNullValue_bad.java
@@ -123,9 +123,9 @@ public class Get_givenMandatorySimpleArg_whenArgNullValue_bad {
         RestfulResponse<JsonRepresentation> restfulResponseOfError = restfulResponse.wraps(JsonRepresentation.class);
         JsonRepresentation repr = restfulResponseOfError.getEntity();
         
-        assertThat(repr.getString("from.invalidReason"), is("Mandatory"));
+        assertThat(repr.getString("from.invalidReason"), is("'from' is mandatory"));
         // TODO: really ought to be null, but ObjectActionImpl.isProposedArgumentSetValidResultSet also checks that each argument is valid
-        assertThat(repr.getString("x-ro-invalidReason"), is("Mandatory")); 
+        assertThat(repr.getString("x-ro-invalidReason"), is("'from' is mandatory"));
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenViewModel_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenViewModel_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenViewModel_ok_TODO.java
new file mode 100644
index 0000000..d12c12b
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Get_givenViewModel_ok_TODO.java
@@ -0,0 +1,70 @@
+/*
+ *  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.restfulobjects.tck.domainobjectorservice.id.action.invoke;
+
+import org.apache.isis.viewer.restfulobjects.applib.*;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.Header;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ActionResultRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ActionResultRepresentation.ResultType;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ListRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ObjectActionRepresentation;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.apache.isis.viewer.restfulobjects.tck.Util;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.hamcrest.Matchers;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+import java.io.IOException;
+
+import static org.apache.isis.viewer.restfulobjects.tck.RestfulMatchers.hasProfile;
+import static org.apache.isis.viewer.restfulobjects.tck.RestfulMatchers.isLink;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class Get_givenViewModel_ok_TODO {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    private RestfulClient client;
+
+    private DomainServiceResource serviceResource;
+
+    @Before
+    public void setUp() throws Exception {
+        client = webServerRule.getClient();
+
+        serviceResource = client.getDomainServiceResource();
+    }
+
+    @Ignore
+    @Test
+    public void usingClientFollow() throws Exception {
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Post_givenViewModel_then_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Post_givenViewModel_then_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Post_givenViewModel_then_ok_TODO.java
new file mode 100644
index 0000000..e84f4a6
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Post_givenViewModel_then_ok_TODO.java
@@ -0,0 +1,63 @@
+/*
+ *  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.restfulobjects.tck.domainobjectorservice.id.action.invoke;
+
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ActionResultRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.ObjectActionRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.util.JsonNodeUtils;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.apache.isis.viewer.restfulobjects.tck.Util;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class Post_givenViewModel_then_ok_TODO {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    private RestfulClient client;
+
+    private DomainServiceResource serviceResource;
+
+    @Before
+    public void setUp() throws Exception {
+        client = webServerRule.getClient();
+
+        serviceResource = client.getDomainServiceResource();
+    }
+
+    @Ignore
+    @Test
+    public void usingClientFollow() throws Exception {
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Put_givenViewModel_then_ok_TODO.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Put_givenViewModel_then_ok_TODO.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Put_givenViewModel_then_ok_TODO.java
new file mode 100644
index 0000000..04536a8
--- /dev/null
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/domainobjectorservice/id/action/invoke/Put_givenViewModel_then_ok_TODO.java
@@ -0,0 +1,51 @@
+/*
+ *  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.restfulobjects.tck.domainobjectorservice.id.action.invoke;
+
+import org.apache.isis.viewer.restfulobjects.applib.client.RestfulClient;
+import org.apache.isis.viewer.restfulobjects.applib.domainobjects.DomainServiceResource;
+import org.apache.isis.viewer.restfulobjects.tck.IsisWebServerRule;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class Put_givenViewModel_then_ok_TODO {
+
+    @Rule
+    public IsisWebServerRule webServerRule = new IsisWebServerRule();
+
+    private RestfulClient client;
+
+    private DomainServiceResource serviceResource;
+
+    @Before
+    public void setUp() throws Exception {
+        client = webServerRule.getClient();
+
+        serviceResource = client.getDomainServiceResource();
+    }
+
+    @Ignore
+    @Test
+    public void usingClientFollow() throws Exception {
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/user/root/Get_thenResponseHeaders_ContentLength_ok.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/user/root/Get_thenResponseHeaders_ContentLength_ok.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/user/root/Get_thenResponseHeaders_ContentLength_ok.java
index 8e484c4..7a094f0 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/user/root/Get_thenResponseHeaders_ContentLength_ok.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/user/root/Get_thenResponseHeaders_ContentLength_ok.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.viewer.restfulobjects.tck.user.root;
 
+import static org.apache.isis.core.commons.matchers.IsisMatchers.greaterThan;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
@@ -58,6 +59,6 @@ public class Get_thenResponseHeaders_ContentLength_ok {
         final RestfulResponse<UserRepresentation> restfulResponse = RestfulResponse.ofT(resp);
 
         // then
-        assertThat(restfulResponse.getHeader(Header.CONTENT_LENGTH), is(IsisMatchers.greaterThan(1000)));
+        assertThat(restfulResponse.getHeader(Header.CONTENT_LENGTH), is(greaterThan(100)));
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/version/Get_thenResponseHeaders_ContentLength_ok.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/version/Get_thenResponseHeaders_ContentLength_ok.java b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/version/Get_thenResponseHeaders_ContentLength_ok.java
index c4756ab..085eb69 100644
--- a/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/version/Get_thenResponseHeaders_ContentLength_ok.java
+++ b/component/viewer/restfulobjects/tck/src/test/java/org/apache/isis/viewer/restfulobjects/tck/version/Get_thenResponseHeaders_ContentLength_ok.java
@@ -60,6 +60,6 @@ public class Get_thenResponseHeaders_ContentLength_ok {
         final RestfulResponse<VersionRepresentation> restfulResponse = RestfulResponse.ofT(resp);
 
         // then
-        assertThat(restfulResponse.getHeader(Header.CONTENT_LENGTH), is(IsisMatchers.greaterThan(1000)));
+        assertThat(restfulResponse.getHeader(Header.CONTENT_LENGTH), is(IsisMatchers.greaterThan(100)));
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/wicket/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/pom.xml b/component/viewer/wicket/pom.xml
index 0b34284..8dc4177 100644
--- a/component/viewer/wicket/pom.xml
+++ b/component/viewer/wicket/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.isis.core</groupId>
 		<artifactId>isis</artifactId>
-        <version>1.4.0</version>
+        <version>1.4.2-SNAPSHOT</version>
 		<relativePath>../../../core/pom.xml</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/component/viewer/wicket/tck/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/tck/pom.xml b/component/viewer/wicket/tck/pom.xml
index 8e7d41c..d926e9b 100644
--- a/component/viewer/wicket/tck/pom.xml
+++ b/component/viewer/wicket/tck/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.isis.core</groupId>
         <artifactId>isis-core-tck</artifactId>
-        <version>1.4.0</version>
+        <version>1.4.2-SNAPSHOT</version>
         <relativePath>../../../../core/tck/pom.xml</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
index cabcfe6..d4dedc9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
@@ -140,7 +140,12 @@ public interface AdapterManager extends Injectable {
 
     /**
      * As per {@link #adapterFor(TypedOid, ConcurrencyChecking)}, with
-     * {@value ConcurrencyChecking#NO_CHECK no checking}.
+     * {@value org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking#NO_CHECK no checking}.
+     *
+     * <p>
+     * This method  will <i>always</i> return an object, possibly indicating it is persistent; so make sure that you
+     * know that the oid does indeed represent an object you know exists.
+     * </p>
      */
     ObjectAdapter adapterFor(TypedOid oid);
     

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshaller.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshaller.java
index 05d1dc5..77a2db9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshaller.java
@@ -82,7 +82,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 public class OidMarshaller {
 
 	private static final String TRANSIENT_INDICATOR = "!";
-    private static final String VIEWMODEL_INDICATOR = "*";
+    public static final String VIEWMODEL_INDICATOR = "*";
 	private static final String SEPARATOR = ":";
 	private static final String SEPARATOR_NESTING = "~";
 	private static final String SEPARATOR_COLLECTION = "$";

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/mandatory/MandatoryFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/mandatory/MandatoryFacetAbstract.java
index 0e6c44b..ed4f07b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/mandatory/MandatoryFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/mandatory/MandatoryFacetAbstract.java
@@ -88,12 +88,11 @@ public abstract class MandatoryFacetAbstract extends MarkerFacetAbstract impleme
         }
         final ProposedHolder proposedHolder = (ProposedHolder) context;
         final boolean required = isRequiredButNull(proposedHolder.getProposed());
-        if (required) {
-            final NamedFacet namedFacet = getFacetHolder().getFacet(NamedFacet.class);
-            final String name = namedFacet != null? namedFacet.value(): null;
-            return name != null? name + " is mandatory":"Mandatory";
-        } else {
+        if (!required) {
             return null;
         }
+        final NamedFacet namedFacet = getFacetHolder().getFacet(NamedFacet.class);
+        final String name = namedFacet != null? namedFacet.value(): null;
+        return name != null? "'" + name + "' is mandatory":"Mandatory";
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
index ea5bf2a..48585bf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceDefault.java
@@ -28,6 +28,7 @@ import org.apache.isis.applib.services.bookmark.BookmarkHolder;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.core.metamodel.adapter.DomainObjectServices;
 import org.apache.isis.core.metamodel.adapter.DomainObjectServicesAware;
+import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 
 public class BookmarkServiceDefault implements BookmarkService, DomainObjectServicesAware {
 
@@ -83,7 +84,7 @@ public class BookmarkServiceDefault implements BookmarkService, DomainObjectServ
         }
         try {
             return domainObjectServices.lookup(bookmark);
-        } catch(org.apache.isis.core.runtime.persistence.ObjectNotFoundException ex) {
+        } catch(ObjectNotFoundException ex) {
             return null;
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/ObjectNotFoundException.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/ObjectNotFoundException.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/ObjectNotFoundException.java
index 47cee58..5b213b0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/ObjectNotFoundException.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/ObjectNotFoundException.java
@@ -21,13 +21,13 @@ package org.apache.isis.core.runtime.persistence;
 
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 
+/**
+ * Indicates that the <tt>PojoRecreator</tt> was unable to instantiate a new pojo for the specified
+ * {@link org.apache.isis.core.metamodel.adapter.oid.Oid}.
+ */
 public class ObjectNotFoundException extends ObjectPersistenceException {
     private static final long serialVersionUID = 1L;
 
-    public ObjectNotFoundException() {
-        super();
-    }
-
     public ObjectNotFoundException(final Oid oid) {
         super("Object not found in store with oid " + oid);
     }
@@ -35,8 +35,4 @@ public class ObjectNotFoundException extends ObjectPersistenceException {
     public ObjectNotFoundException(final Oid oid, final Throwable cause) {
         super("Object not found in store with oid " + oid, cause);
     }
-
-    public ObjectNotFoundException(final String s) {
-        super(s);
-    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRecreationException.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRecreationException.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRecreationException.java
new file mode 100644
index 0000000..d1fe88f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRecreationException.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.runtime.persistence;
+
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
+
+public class PojoRecreationException extends ObjectPersistenceException {
+    private static final long serialVersionUID = 1L;
+
+    public PojoRecreationException(Oid oid, Throwable cause) {
+        super("Could not recreate pojo for oid oid " + oid, cause);
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRefreshException.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRefreshException.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRefreshException.java
new file mode 100644
index 0000000..cd6d842
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/persistence/PojoRefreshException.java
@@ -0,0 +1,34 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.core.runtime.persistence;
+
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
+
+public class PojoRefreshException extends ObjectNotFoundException {
+    private static final long serialVersionUID = 1L;
+
+    public PojoRefreshException(Oid oid) {
+        super(oid);
+    }
+
+    public PojoRefreshException(Oid oid, Throwable cause) {
+        super(oid, cause);
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/46e8aef8/core/objectstore-inmemory/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
----------------------------------------------------------------------
diff --git a/core/objectstore-inmemory/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java b/core/objectstore-inmemory/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
index 8f178e5..8630902 100644
--- a/core/objectstore-inmemory/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
+++ b/core/objectstore-inmemory/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java
@@ -26,6 +26,7 @@ import java.util.Vector;
 
 import com.google.common.collect.Lists;
 
+import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,7 +51,6 @@ import org.apache.isis.core.objectstore.commands.InMemorySaveObjectCommand;
 import org.apache.isis.core.objectstore.internal.ObjectStoreInstances;
 import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
 import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjectsDefault;
-import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.ObjectPersistenceException;
 import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
 import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi;