You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/11/12 21:02:28 UTC

[46/50] [abbrv] isis git commit: ISIS-1246: improving the diagnostics for NPE.

ISIS-1246: improving the diagnostics for NPE.


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

Branch: refs/heads/ISIS-1224-select2-v4
Commit: aedbd56b17e0f22207433a7f17d39bab4b23cbaf
Parents: 8da4a6f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Nov 11 15:41:09 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Nov 11 15:41:09 2015 +0000

----------------------------------------------------------------------
 .../system/persistence/PersistenceSession.java  | 46 +++++++++++++++-----
 1 file changed, 34 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/aedbd56b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 81a62f1..0e72141 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -1405,26 +1405,48 @@ public class PersistenceSession implements
 
     private void ensurePojoAdapterMapConsistent(final ObjectAdapter adapter) {
         final Object adapterPojo = adapter.getObject();
-        final ObjectAdapter adapterAccordingToPojoAdapterMap = pojoAdapterMap.getAdapter(adapterPojo);
-        // take care not to touch the pojo, since it might have been deleted.
-        ensureThatArg(
-                adapter, is(adapterAccordingToPojoAdapterMap),
-                "mismatch in PojoAdapterMap: provided adapter's OID: " + adapter.getOid() + "; \n"
-                        + " but map's adapter's OID was : " + adapterAccordingToPojoAdapterMap.getOid());
+        final ObjectAdapter adapterAccordingToMap = pojoAdapterMap.getAdapter(adapterPojo);
+
+        if(adapterPojo == null) {
+            // nothing to check
+            return;
+        }
+        ensureMapConsistent(adapter, adapterAccordingToMap, "PojoAdapterMap");
     }
 
     private void ensureOidAdapterMapConsistent(final ObjectAdapter adapter) {
         final Oid adapterOid = adapter.getOid();
-        final ObjectAdapter adapterAccordingToOidAdapterMap = oidAdapterMap
-                .getAdapter(adapterOid);
+        final ObjectAdapter adapterAccordingToMap = oidAdapterMap.getAdapter(adapterOid);
+
+        if(adapterOid == null) {
+            // nothing to check
+            return;
+        }
+        ensureMapConsistent(adapter, adapterAccordingToMap, "OidAdapterMap");
+    }
+
+    private void ensureMapConsistent(
+            final ObjectAdapter adapter,
+            final ObjectAdapter adapterAccordingToMap,
+            final String mapName) {
+
+        final Oid adapterOid = adapter.getOid();
+
         // take care not to touch the pojo, since it might have been deleted.
+
+        if(adapterAccordingToMap == null) {
+            throw new IllegalStateException("mismatch in "
+                    + mapName
+                    + ": provided adapter's OID: " + adapterOid + "; but no adapter found in map");
+        }
         ensureThatArg(
-                adapter, is(adapterAccordingToOidAdapterMap),
-                "mismatch in OidAdapter map: " + "adapter's Oid: " + adapterOid + ", " + "provided adapter's OID: "
-                        + adapter.getOid() + "; " + "map's adapter's Oid: " + adapterAccordingToOidAdapterMap.getOid());
+                adapter, is(adapterAccordingToMap),
+                "mismatch in "
+                        + mapName
+                        + ": provided adapter's OID: " + adapterOid + ", \n"
+                        + "but map's adapter's OID was: " + adapterAccordingToMap.getOid());
     }
 
-
     public ObjectAdapter adapterForAny(RootOid rootOid) {
 
         final ObjectSpecId specId = rootOid.getObjectSpecId();