You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/09/08 23:13:46 UTC

[isis] 05/06: ISIS-1976: kick in new OidFactory

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1976-rethink-object-adapters
in repository https://gitbox.apache.org/repos/asf/isis.git

commit ef06f4f0afa77a976c366d7835f8aaf9805a92e6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Sep 9 00:15:36 2018 +0200

    ISIS-1976: kick in new OidFactory
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 ...ObjectAdapterContext_ObjectAdapterProvider.java | 35 +++-------------------
 .../factories/OidFactory_Builder.java              |  7 ++++-
 2 files changed, 10 insertions(+), 32 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
index 776c4db..3e1041f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
@@ -19,6 +19,7 @@
 package org.apache.isis.core.runtime.system.persistence.adaptermanager;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -108,37 +109,9 @@ class ObjectAdapterContext_ObjectAdapterProvider implements ObjectAdapterProvide
             return existing;
         }
         
-        final RootOid rootOid2 = oidFactory.oidFor(pojo);
-        
-//        if(rootOid2==null) {
-//            System.err.println("!!! "+pojo);
-//            _Exceptions.throwUnexpectedCodeReach();
-//        }
-//        
-//        if(rootOid2!=null && rootOid2.isValue()) {
-//            return objectAdapterContext.getFactories().createRootAdapter(pojo, null);
-//        }
-        
-        // -- legacy code
-        
-        final ObjectAdapter existingOrValueAdapter = existingOrValueAdapter(pojo);
-        if(existingOrValueAdapter != null) {
-            return existingOrValueAdapter;
-        }
-
-        final RootOid rootOid = objectAdapterContext.createTransientOrViewModelOid(pojo);
-        
-      //at this point we know its not a value
-        if(rootOid2==null) {
-            System.err.println("!!! expected "+rootOid);
-            _Exceptions.throwUnexpectedCodeReach();
-        }
-        
-        
-        if(rootOid2!=null && rootOid2.isValue()) {
-            Assert.assertEquals("expected same", rootOid, null);
-        } else if(!rootOid.isTransient()) {
-            Assert.assertEquals("expected same", rootOid, rootOid2);    
+        final RootOid rootOid = oidFactory.oidFor(pojo);
+        if(rootOid.isValue()) {
+            return objectAdapterContext.getFactories().createRootAdapter(pojo, null); 
         }
         
         final ObjectAdapter newAdapter = objectAdapterContext.getFactories().createRootAdapter(pojo, rootOid);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/factories/OidFactory_Builder.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/factories/OidFactory_Builder.java
index a7bb938..bda33ab 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/factories/OidFactory_Builder.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/factories/OidFactory_Builder.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.runtime.system.persistence.adaptermanager.factories
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.function.Function;
 
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
@@ -52,11 +53,15 @@ class OidFactory_Builder implements OidFactoryBuilder {
                 
                 final ObjectSpecification spec = specProvider.apply(pojo);
                 
-                return handler.stream()
+                final RootOid rootOid = handler.stream()
                 .filter(h->h.isHandling(pojo, spec))
                 .findFirst()
                 .map(h->h.oidFor(pojo, spec))
                 .orElse(null);
+                
+                Objects.requireNonNull(rootOid, "Could not create an Oid for pojo: "+pojo);
+                
+                return rootOid;
             }
             
         };