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/11 20:21:47 UTC

[isis] 04/06: ISIS-1976: cleaning up

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 1845517ee7c56166b7043bc31c6030651ed14b71
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 11 18:40:40 2018 +0200

    ISIS-1976: cleaning up
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../system/persistence/PersistenceSession4.java    |  2 +-
 .../system/persistence/PersistenceSession5.java    |  4 +--
 .../adaptermanager/ObjectAdapterContext.java       | 39 ++++++++++++++++++----
 .../ObjectAdapterContext_AdapterManager.java       |  2 +-
 .../ObjectAdapterContext_MementoSupport.java       |  5 ++-
 ...ctAdapterContext_ObjectAdapterByIdProvider.java |  6 ++--
 ...ObjectAdapterContext_ObjectAdapterProvider.java |  9 -----
 7 files changed, 41 insertions(+), 26 deletions(-)

diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
index 78db23d..5197a93 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
@@ -758,7 +758,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
         final Version datastoreVersion = getVersionIfAny(pc);
         final RootOid originalOid = objectAdapterContext.createPersistentOrViewModelOid(pojo);
 
-        final ObjectAdapter adapter = objectAdapterContext.addRecreatedPojoToCache(originalOid, pojo);
+        final ObjectAdapter adapter = objectAdapterContext.recreatePojo(originalOid, pojo);
         adapter.setVersion(datastoreVersion);
 
         CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
index a63cb94..ef828a3 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
@@ -758,7 +758,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
         final Version datastoreVersion = getVersionIfAny(pc);
         final RootOid originalOid = objectAdapterContext.createPersistentOrViewModelOid(pojo);
 
-        final ObjectAdapter adapter = objectAdapterContext.addRecreatedPojoToCache(originalOid, pojo);
+        final ObjectAdapter adapter = objectAdapterContext.recreatePojo(originalOid, pojo);
         adapter.setVersion(datastoreVersion);
 
         CallbackFacet.Util.callCallback(adapter, LoadedCallbackFacet.class);
@@ -856,7 +856,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
             // it seems reasonable in this case to simply map into Isis here ("just-in-time"); presumably
             // DN would not be calling this callback if the pojo was not persistent.
 
-            final ObjectAdapter adapter = objectAdapterContext.addPersistentToCache(pojo);
+            final ObjectAdapter adapter = objectAdapterContext.fetchPersistent(pojo);
             if (adapter == null) {
                 throw new RuntimeException(
                         "DN could not find objectId for pojo (unexpected) and so could not map into Isis; pojo=["
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
index 7ef6a12..a914314 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext.java
@@ -78,6 +78,7 @@ final public class ObjectAdapterContext {
     private final ObjectAdapterContext_DependencyInjection dependencyInjectionMixin;
     final ObjectAdapterContext_ObjectCreation objectCreationMixin;
     private final ObjectAdapterContext_LifecycleEventSupport lifecycleEventMixin;
+    private final ServicesInjector servicesInjector;
 
     private ObjectAdapterContext(
             ServicesInjector servicesInjector, 
@@ -97,6 +98,7 @@ final public class ObjectAdapterContext {
 
         this.persistenceSession = persistenceSession;
         this.specificationLoader = specificationLoader;
+        this.servicesInjector = servicesInjector;
 
         this.objectAdapterFactories = new ObjectAdapterContext_Factories(
                 authenticationSession, 
@@ -189,19 +191,42 @@ final public class ObjectAdapterContext {
     // -- ADAPTER MANAGER LEGACY
 
     @Deprecated // don't expose caching
-    public ObjectAdapter addRecreatedPojoToCache(Oid oid, Object recreatedPojo) {
-        return adapterManagerMixin.addRecreatedPojoToCache(oid, recreatedPojo);
+    public ObjectAdapter fetchPersistent(final Object pojo) {
+        if (persistenceSession.getPersistenceManager().getObjectId(pojo) == null) {
+            return null;
+        }
+        final RootOid oid = createPersistentOrViewModelOid(pojo);
+        final ObjectAdapter adapter = recreatePojo(oid, pojo);
+        return adapter;
+    }
+    
+    @Deprecated
+    public ObjectAdapter recreatePojo(Oid oid, Object recreatedPojo) {
+        final ObjectAdapter createdAdapter = createRootOrAggregatedAdapter(oid, recreatedPojo);
+        return injectServices(createdAdapter);
     }
 
     @Deprecated
     public ObjectAdapter injectServices(final ObjectAdapter adapter) {
-        return adapterManagerMixin.injectServices(adapter);
+        Objects.requireNonNull(adapter);
+        final Object pojo = adapter.getObject();
+        servicesInjector.injectServicesInto(pojo);
+        return adapter;
     }
     
-    @Deprecated // don't expose caching
-    public ObjectAdapter addPersistentToCache(final Object pojo) {
-        return objectAdapterProviderMixin.addPersistentToCache(pojo);
+    @Deprecated
+    public ObjectAdapter createRootOrAggregatedAdapter(final Oid oid, final Object pojo) {
+        final ObjectAdapter createdAdapter;
+        if(oid instanceof RootOid) {
+            final RootOid rootOid = (RootOid) oid;
+            createdAdapter = getFactories().createRootAdapter(pojo, rootOid);
+        } else /*if (oid instanceof CollectionOid)*/ {
+            final ParentedCollectionOid collectionOid = (ParentedCollectionOid) oid;
+            createdAdapter = getFactories().createCollectionAdapter(pojo, collectionOid);
+        }
+        return createdAdapter;
     }
+    
 
     // -- OBJECT ADAPTER PROVIDER SUPPORT
 
@@ -245,7 +270,7 @@ final public class ObjectAdapterContext {
         final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
         final RootOid newRootOid = rootOidFactory.apply(objectSpecId);
 
-        final ObjectAdapter viewModelAdapter = adapterManagerMixin.addRecreatedPojoToCache(newRootOid, viewModelPojo);
+        final ObjectAdapter viewModelAdapter = adapterManagerMixin.recreatePojo(newRootOid, viewModelPojo);
         return viewModelAdapter;
     }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_AdapterManager.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_AdapterManager.java
index 0dfb93f..a433e1b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_AdapterManager.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_AdapterManager.java
@@ -49,7 +49,7 @@ class ObjectAdapterContext_AdapterManager {
         this.servicesInjector = persistenceSession.getServicesInjector();
     }
     
-    ObjectAdapter addRecreatedPojoToCache(Oid oid, Object recreatedPojo) {
+    ObjectAdapter recreatePojo(Oid oid, Object recreatedPojo) {
         final ObjectAdapter createdAdapter = createRootOrAggregatedAdapter(oid, recreatedPojo);
         return injectServices(createdAdapter);
     }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
index caf0d67..5caf320 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
@@ -73,7 +72,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
         if (spec.isParentedOrFreeCollection()) {
 
             final Object recreatedPojo = objectAdapterContext.instantiateAndInjectServices(spec);
-            adapter = objectAdapterContext.addRecreatedPojoToCache(oid, recreatedPojo);
+            adapter = objectAdapterContext.recreatePojo(oid, recreatedPojo);
             adapter = populateCollection(adapter, (CollectionData) data);
 
         } else {
@@ -197,7 +196,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
 
     private void updateOneToManyAssociation(final ObjectAdapter objectAdapter, final OneToManyAssociation otma, final CollectionData collectionData) {
         final ObjectAdapter collection = otma.get(objectAdapter, InteractionInitiatedBy.FRAMEWORK);
-        final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection);
+        final CollectionFacet facet = CollectionFacet.Utils.getCollectionFacetFromSpec(collection);
         final List<ObjectAdapter> original = _Lists.newArrayList();
         for (final ObjectAdapter adapter : facet.iterable(collection)) {
             original.add(adapter);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
index d14c6d5..8051e09 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
@@ -142,7 +142,7 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
                 } else {
                     pojo = persistenceSession.fetchPersistentPojo(rootOid);
                 }
-                adapter = objectAdapterContext.addRecreatedPojoToCache(rootOid, pojo);
+                adapter = objectAdapterContext.recreatePojo(rootOid, pojo);
             } catch(ObjectNotFoundException ex) {
                 throw ex; // just rethrow
             } catch(RuntimeException ex) {
@@ -172,7 +172,7 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
             // handle view models or transient
             if (rootOid.isTransient() || rootOid.isViewModel()) {
                 final Object pojo = recreatePojoTransientOrViewModel(rootOid);
-                adapter = objectAdapterContext.addRecreatedPojoToCache(rootOid, pojo);
+                adapter = objectAdapterContext.recreatePojo(rootOid, pojo);
                 syncVersion(concurrencyChecking, adapter, rootOid);
             }
             if (adapter != null) {
@@ -191,7 +191,7 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
             if(pojo != null) {
                 ObjectAdapter adapter;
                 try {
-                    adapter = objectAdapterContext.addRecreatedPojoToCache(rootOid, pojo);
+                    adapter = objectAdapterContext.recreatePojo(rootOid, pojo);
                     adapterByOid.put(rootOid, adapter);
                 } catch(ObjectNotFoundException ex) {
                     throw ex; // just rethrow
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 7c700b9..7c5f20f 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
@@ -116,15 +116,6 @@ class ObjectAdapterContext_ObjectAdapterProvider implements ObjectAdapterProvide
         return objectAdapterContext.adapterForViewModel(viewModelPojo, rootOidFactory);
     }
     
-    protected ObjectAdapter addPersistentToCache(final Object pojo) {
-        if (persistenceSession.getPersistenceManager().getObjectId(pojo) == null) {
-            return null;
-        }
-        final RootOid oid = objectAdapterContext.createPersistentOrViewModelOid(pojo);
-        final ObjectAdapter adapter = objectAdapterContext.addRecreatedPojoToCache(oid, pojo);
-        return adapter;
-    }
-    
     // -- DOMAIN OBJECT CREATION SUPPORT
     
     @Override