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 2019/02/19 13:55:33 UTC

[isis] branch 2033-IoC updated: ISIS-2033: removes from PersistenceSession interface

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

ahuber pushed a commit to branch 2033-IoC
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/2033-IoC by this push:
     new f2d1d9d  ISIS-2033: removes from PersistenceSession interface
f2d1d9d is described below

commit f2d1d9daa57c0a1732dee7a376c3f6b551362061
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 19 14:30:24 2019 +0100

    ISIS-2033: removes from PersistenceSession interface
    
    'ObjectAdapterProvider.Delegating'
    
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
 .../adapter/ObjectAdapterByIdProvider.java         |  6 --
 .../metamodel/adapter/ObjectAdapterProvider.java   |  5 --
 .../RecreatableObjectFacetAbstract.java            |  6 --
 .../queries/PersistenceQueryProcessor.java         |  2 -
 .../jdo/persistence/PersistenceSessionBase.java    |  7 +-
 .../adaptermanager/ObjectAdapterLegacy.java        | 90 +++++++++++-----------
 .../services/jdosupport/IsisJdoSupportDN4.java     |  4 +-
 .../isis/jdo/persistence/PersistenceSession4.java  | 16 ++--
 .../queries/PersistenceQueryProcessorAbstract.java | 15 +++-
 .../services/jdosupport/IsisJdoSupportDN5.java     |  6 +-
 .../isis/jdo/persistence/PersistenceSession5.java  | 13 +---
 .../queries/PersistenceQueryProcessorAbstract.java | 16 +++-
 .../background/CommandExecutorServiceDefault.java  | 12 +--
 .../context/session/ManagedObjectContextBase.java  | 10 +--
 .../context/session/ManagedObjectPersistence.java  |  5 --
 .../system/persistence/PersistenceSession.java     |  3 +-
 .../core/runtime/system/session/IsisSession.java   |  2 +-
 .../model/mementos/ObjectAdapterMemento.java       |  2 +-
 18 files changed, 106 insertions(+), 114 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java
index a2b78d4..213f45b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterByIdProvider.java
@@ -70,12 +70,6 @@ public interface ObjectAdapterByIdProvider {
 
         
     }
-
-
-   
-
-
-    
     
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
index b4b3866..1351722 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.adapter;
 import javax.annotation.Nullable;
 
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 
@@ -79,10 +78,6 @@ public interface ObjectAdapterProvider {
         default ObjectAdapter adapterFor(Object domainObject) {
             return getObjectAdapterProvider().adapterFor(domainObject);
         }
-        
-        default ObjectAdapter adapterForServicePojo(Object servicePojo) {
-        	return getObjectAdapterProvider().adapterFor(servicePojo);
-        }
 
         default ObjectAdapter adapterForCollection(
                 final Object pojo,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
index 1ba58e8..0610273 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
@@ -19,24 +19,18 @@
 
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
-import java.lang.reflect.Array;
 import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
 import java.util.Map;
 
 import org.apache.isis.applib.ViewModel;
-import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.MethodExtensions;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
 
-import lombok.val;
-
 public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract implements ViewModelFacet {
 
     private final PostConstructMethodCache postConstructMethodCache;
diff --git a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java
index 4490a68..4ef16d8 100644
--- a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java
+++ b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/datanucleus/persistence/queries/PersistenceQueryProcessor.java
@@ -26,5 +26,3 @@ import org.apache.isis.jdo.datanucleus.persistence.PersistenceQuery;
 public interface PersistenceQueryProcessor<T extends PersistenceQuery> {
     List<ObjectAdapter> process(T query);
 }
-
-// Copyright (c) Naked Objects Group Ltd.
diff --git a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java
index 533d7d9..863ddaf 100644
--- a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java
+++ b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/PersistenceSessionBase.java
@@ -41,6 +41,7 @@ import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.MetaModelContext;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.plugins.ioc.RequestContextService;
@@ -68,6 +69,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
 
     protected final ServiceInjector serviceInjector;
     protected final ServiceRegistry serviceRegistry;
+    protected final ObjectAdapterProvider objectAdapterProvider;
 
     protected final CommandContext commandContext;
     protected final CommandService commandService;
@@ -123,6 +125,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
 
         this.serviceInjector = IsisContext.getServiceInjector();
         this.serviceRegistry = IsisContext.getServiceRegistry();
+        this.objectAdapterProvider = IsisContext.getObjectAdapterProvider();
         this.jdoPersistenceManagerFactory = jdoPersistenceManagerFactory;
         this.fixturesInstalledStateHolder = fixturesInstalledFlag;
 
@@ -143,7 +146,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
 
         // sub-components
         this.persistenceQueryFactory = new PersistenceQueryFactory(
-                obj->this.getObjectAdapterProvider().adapterFor(obj), 
+                obj->objectAdapterProvider.adapterFor(obj), 
                 this.specificationLoader);
         this.transactionManager = new IsisTransactionManager(this, serviceRegistry);
 
@@ -276,7 +279,7 @@ abstract class PersistenceSessionBase implements PersistenceSession {
      * @return oid for the given domain object 
      */
     protected @Nullable Oid oidFor(@Nullable Object domainObject) {
-        return mapIfPresentElse(adapterFor(domainObject), ObjectAdapter::getOid, null);
+        return mapIfPresentElse(objectAdapterProvider.adapterFor(domainObject), ObjectAdapter::getOid, null);
     }
     
     @Override
diff --git a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java
index 3015970..a946597 100644
--- a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java
+++ b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterLegacy.java
@@ -35,53 +35,53 @@ import org.apache.isis.schema.common.v1.ValueType;
 import org.apache.isis.schema.utils.CommonDtoUtils;
 
 /**
- * TODO was referenced from CommandExecutorServiceDefault  
+ * TODO [2033] was referenced from CommandExecutorServiceDefault, is this obsolete?
  */
 final class ObjectAdapterLegacy {
 
-	public static ObjectAdapter adapterFor(Object targetObject) {
-		if(targetObject instanceof OidDto) {
-			final OidDto oidDto = (OidDto) targetObject;
-			return adapterFor(oidDto);
-		}
-		if(targetObject instanceof CollectionDto) {
-			final CollectionDto collectionDto = (CollectionDto) targetObject;
-			final List<ValueDto> valueDtoList = collectionDto.getValue();
-			final List<Object> pojoList = _Lists.newArrayList();
-			for (final ValueDto valueDto : valueDtoList) {
-				ValueType valueType = collectionDto.getType();
-				final Object valueOrOidDto = CommonDtoUtils.getValue(valueDto, valueType);
-				// converting from adapter and back means we handle both
-				// collections of references and of values
-				final ObjectAdapter objectAdapter = adapterFor(valueOrOidDto);
-				Object pojo = objectAdapter != null ? objectAdapter.getPojo() : null;
-				pojoList.add(pojo);
-			}
-			return adapterFor(pojoList);
-		}
-		if(targetObject instanceof Bookmark) {
-			final Bookmark bookmark = (Bookmark) targetObject;
-			return adapterFor(bookmark);
-		}
-		return getPersistenceSession().adapterFor(targetObject);
-	}
-
-	private static ObjectAdapter adapterFor(final OidDto oidDto) {
-		final Bookmark bookmark = Bookmark.from(oidDto);
-		return adapterFor(bookmark);
-	}
-
-	private static ObjectAdapter adapterFor(final Bookmark bookmark) {
-		final RootOid rootOid = Factory.ofBookmark(bookmark);
-		return adapterFor(rootOid);
-	}
-
-	private static ObjectAdapter adapterFor(final RootOid rootOid) {
-		return getPersistenceSession().adapterFor(rootOid);
-	}
-
-	private static PersistenceSession getPersistenceSession() {
-		return IsisContext.getPersistenceSession().orElseThrow(_Exceptions::unexpectedCodeReach);
-	}
+//	private static ObjectAdapter adapterFor(Object targetObject) {
+//		if(targetObject instanceof OidDto) {
+//			final OidDto oidDto = (OidDto) targetObject;
+//			return adapterFor(oidDto);
+//		}
+//		if(targetObject instanceof CollectionDto) {
+//			final CollectionDto collectionDto = (CollectionDto) targetObject;
+//			final List<ValueDto> valueDtoList = collectionDto.getValue();
+//			final List<Object> pojoList = _Lists.newArrayList();
+//			for (final ValueDto valueDto : valueDtoList) {
+//				ValueType valueType = collectionDto.getType();
+//				final Object valueOrOidDto = CommonDtoUtils.getValue(valueDto, valueType);
+//				// converting from adapter and back means we handle both
+//				// collections of references and of values
+//				final ObjectAdapter objectAdapter = adapterFor(valueOrOidDto);
+//				Object pojo = objectAdapter != null ? objectAdapter.getPojo() : null;
+//				pojoList.add(pojo);
+//			}
+//			return adapterFor(pojoList);
+//		}
+//		if(targetObject instanceof Bookmark) {
+//			final Bookmark bookmark = (Bookmark) targetObject;
+//			return adapterFor(bookmark);
+//		}
+//		return getPersistenceSession().adapterFor(targetObject);
+//	}
+//
+//	private static ObjectAdapter adapterFor(final OidDto oidDto) {
+//		final Bookmark bookmark = Bookmark.from(oidDto);
+//		return adapterFor(bookmark);
+//	}
+//
+//	private static ObjectAdapter adapterFor(final Bookmark bookmark) {
+//		final RootOid rootOid = Factory.ofBookmark(bookmark);
+//		return adapterFor(rootOid);
+//	}
+//
+//	private static ObjectAdapter adapterFor(final RootOid rootOid) {
+//		return getPersistenceSession().adapterFor(rootOid);
+//	}
+//
+//	private static PersistenceSession getPersistenceSession() {
+//		return IsisContext.getPersistenceSession().orElseThrow(_Exceptions::unexpectedCodeReach);
+//	}
 
 }
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java
index 475125c..dbb60be 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN4.java
@@ -43,6 +43,7 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.exceptions.persistence.ObjectPersistenceException;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -70,7 +71,7 @@ public class IsisJdoSupportDN4 implements IsisJdoSupport_v3_1 {
     @Programmatic
     @Override
     public <T> T refresh(final T domainObject) {
-        final ObjectAdapter adapter = getPersistenceSession().adapterFor(domainObject);
+        final ObjectAdapter adapter = objectAdapterProvider.adapterFor(domainObject);
         getPersistenceSession().refreshRoot(adapter);
         return domainObject;
     }
@@ -208,6 +209,7 @@ public class IsisJdoSupportDN4 implements IsisJdoSupport_v3_1 {
     // //////////////////////////////////////
 
     @Inject IsisSessionFactory isisSessionFactory;
+    @Inject ObjectAdapterProvider objectAdapterProvider;
 
     protected PersistenceSession getPersistenceSession() {
         return isisSessionFactory.getCurrentSession().getPersistenceSession();
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java
index 3ebb610..44ab86c 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession4.java
@@ -89,6 +89,7 @@ import org.apache.isis.jdo.datanucleus.persistence.queries.PersistenceQueryProce
 import org.apache.isis.jdo.persistence.NotPersistableException;
 import org.apache.isis.jdo.persistence.PersistenceSessionBase;
 import org.apache.isis.jdo.persistence.UnsupportedFindException;
+import org.apache.isis.jdo.persistence.PersistenceSessionBase.State;
 import org.apache.isis.jdo.persistence.adaptermanager.ObjectAdapterContext;
 import org.apache.isis.jdo.persistence.query.PersistenceQueryFindAllInstances;
 import org.apache.isis.jdo.persistence.query.PersistenceQueryFindUsingApplibQueryDefault;
@@ -338,6 +339,8 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
         final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.MULTIPLE);
         return CollectionFacet.Utils.toAdapterList(instances);
     }
+    
+    
     @Override
     public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
         final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.SINGLE);
@@ -372,7 +375,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
                 ()->processPersistenceQuery(processor, persistenceQuery) );
         final ObjectSpecification specification = persistenceQuery.getSpecification();
         final FreeStandingList results = FreeStandingList.of(specification, instances);
-        return adapterFor(results);
+        return objectAdapterProvider.adapterFor(results);
     }
 
     /**
@@ -735,7 +738,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
 
     @Override
     public void enlistDeletingAndInvokeIsisRemovingCallbackFacet(final Persistable pojo) {
-        ObjectAdapter adapter = adapterFor(pojo);
+        ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
 
         changedObjectsServiceInternal.enlistDeleting(adapter);
 
@@ -812,7 +815,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
      */
     @Override
     public void enlistCreatedAndRemapIfRequiredThenInvokeIsisInvokePersistingOrUpdatedCallback(final Persistable pojo) {
-        final ObjectAdapter adapter = adapterFor(pojo);
+        final ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
 
         final RootOid rootOid = (RootOid) adapter.getOid(); // ok since this is for a Persistable
 
@@ -863,7 +866,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
      */
     @Override
     public void ensureRootObject(final Persistable pojo) {
-        final Oid oid = adapterFor(pojo).getOid();
+        final Oid oid = objectAdapterProvider.adapterFor(pojo).getOid();
         if (!(oid instanceof RootOid)) {
             throw new IsisException(MessageFormat.format("Not a RootOid: oid={0}, for {1}", oid, pojo));
         }
@@ -904,11 +907,6 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
     }
 
     @Override
-    public ObjectAdapterProvider getObjectAdapterProvider() {
-        return objectAdapterContext.getObjectAdapterProvider();
-    }
-    
-    @Override
     public ObjectAdapterByIdProvider getObjectAdapterByIdProvider() {
         return objectAdapterContext.getObjectAdapterByIdProvider();
     }
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index b8a05ec..fe4a859 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -22,15 +22,18 @@ import java.util.List;
 
 import javax.jdo.listener.InstanceLifecycleEvent;
 
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.jdo.datanucleus.persistence.PersistenceQuery;
 import org.apache.isis.jdo.datanucleus.persistence.queries.PersistenceQueryProcessor;
 import org.apache.isis.jdo.persistence.IsisLifecycleListener;
 import org.apache.isis.jdo.persistence.PersistenceSession4;
 import org.datanucleus.enhancement.Persistable;
 
-import org.apache.isis.commons.internal.collections._Lists;
+import lombok.val;
 
 public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQuery>
 implements PersistenceQueryProcessor<T> {
@@ -49,6 +52,8 @@ implements PersistenceQueryProcessor<T> {
      * to be called.
      */
     protected List<ObjectAdapter> loadAdapters(final List<?> pojos) {
+    	val objectAdapterProvider = objectAdapterProvider();
+    	
         final List<ObjectAdapter> adapters = _Lists.newArrayList();
         for (final Object pojo : pojos) {
             // ought not to be necessary, however for some queries it seems that the
@@ -59,13 +64,19 @@ implements PersistenceQueryProcessor<T> {
                 adapter = persistenceSession.initializeMapAndCheckConcurrency((Persistable) pojo);
             } else {
                 // a value type
-                adapter = persistenceSession.adapterFor(pojo);
+                adapter = objectAdapterProvider.adapterFor(pojo);
             }
             Assert.assertNotNull(adapter);
             adapters.add(adapter);
         }
         return adapters;
     }
+    
+    // -- HELPER
+    
+    protected static ObjectAdapterProvider objectAdapterProvider() { 
+        return IsisContext.getObjectAdapterProvider();
+    }
 
 
 }
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java
index 943798a..c07e6be 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/applib/services/jdosupport/IsisJdoSupportDN5.java
@@ -45,6 +45,7 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.exceptions.persistence.ObjectPersistenceException;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -65,8 +66,8 @@ public class IsisJdoSupportDN5 implements IsisJdoSupport_v3_2 {
     @Programmatic
     @Override
     public <T> T refresh(final T domainObject) {
-        final ObjectAdapter adapter = getPersistenceSession().adapterFor(domainObject);
-        getPersistenceSession().refreshRoot(adapter);
+        final ObjectAdapter adapter = objectAdapterProvider.adapterFor(domainObject);
+        getPersistenceSession().refreshRoot(adapter); //TODO [2033] we can do this without resorting to an adapter
         return domainObject;
     }
 
@@ -214,6 +215,7 @@ public class IsisJdoSupportDN5 implements IsisJdoSupport_v3_2 {
     // //////////////////////////////////////
 
     @Inject IsisSessionFactory isisSessionFactory;
+    @Inject ObjectAdapterProvider objectAdapterProvider;
 
     protected PersistenceSession getPersistenceSession() {
         return isisSessionFactory.getCurrentSession().getPersistenceSession();
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
index f052e62..c096200 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/persistence/PersistenceSession5.java
@@ -374,7 +374,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
                 ()->processPersistenceQuery(processor, persistenceQuery) );
         final ObjectSpecification specification = persistenceQuery.getSpecification();
         final FreeStandingList results = FreeStandingList.of(specification, instances);
-        return adapterFor(results);
+        return objectAdapterProvider.adapterFor(results);
     }
 
     /**
@@ -737,7 +737,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
 
     @Override
     public void enlistDeletingAndInvokeIsisRemovingCallbackFacet(final Persistable pojo) {
-        ObjectAdapter adapter = adapterFor(pojo);
+        ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
 
         changedObjectsServiceInternal.enlistDeleting(adapter);
 
@@ -814,7 +814,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
      */
     @Override
     public void enlistCreatedAndRemapIfRequiredThenInvokeIsisInvokePersistingOrUpdatedCallback(final Persistable pojo) {
-        final ObjectAdapter adapter = adapterFor(pojo);
+        final ObjectAdapter adapter = objectAdapterProvider.adapterFor(pojo);
 
         final RootOid rootOid = (RootOid) adapter.getOid(); // ok since this is for a Persistable
 
@@ -865,7 +865,7 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
      */
     @Override
     public void ensureRootObject(final Persistable pojo) {
-        final Oid oid = adapterFor(pojo).getOid();
+        final Oid oid = objectAdapterProvider.adapterFor(pojo).getOid();
         if (!(oid instanceof RootOid)) {
             throw new IsisException(MessageFormat.format("Not a RootOid: oid={0}, for {1}", oid, pojo));
         }
@@ -906,11 +906,6 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
     }
 
     @Override
-    public ObjectAdapterProvider getObjectAdapterProvider() {
-        return objectAdapterContext.getObjectAdapterProvider();
-    }
-    
-    @Override
     public ObjectAdapterByIdProvider getObjectAdapterByIdProvider() {
         return objectAdapterContext.getObjectAdapterByIdProvider();
     }
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
index f6ac1ba..ca77642 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryProcessorAbstract.java
@@ -22,17 +22,19 @@ import java.util.List;
 
 import javax.jdo.listener.InstanceLifecycleEvent;
 
-import org.datanucleus.enhancement.Persistable;
-
 import org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.jdo.datanucleus.persistence.PersistenceQuery;
 import org.apache.isis.jdo.datanucleus.persistence.queries.PersistenceQueryProcessor;
 import org.apache.isis.jdo.persistence.IsisLifecycleListener;
 import org.apache.isis.jdo.persistence.PersistenceSession5;
+import org.datanucleus.enhancement.Persistable;
+
+import lombok.val;
 
 public abstract class PersistenceQueryProcessorAbstract<T extends PersistenceQuery>
 implements PersistenceQueryProcessor<T> {
@@ -51,6 +53,8 @@ implements PersistenceQueryProcessor<T> {
      * to be called.
      */
     protected List<ObjectAdapter> loadAdapters(final List<?> pojos) {
+    	val objectAdapterProvider = objectAdapterProvider();
+    	
         final List<ObjectAdapter> adapters = _Lists.newArrayList();
         for (final Object pojo : pojos) {
             // ought not to be necessary, however for some queries it seems that the
@@ -62,7 +66,7 @@ implements PersistenceQueryProcessor<T> {
                 Assert.assertNotNull(adapter);
             } else {
                 // a value type
-                adapter = persistenceSession.adapterFor(pojo);
+                adapter = objectAdapterProvider.adapterFor(pojo);
                 Assert.assertNotNull(adapter);
             }
             adapters.add(adapter);
@@ -76,5 +80,9 @@ implements PersistenceQueryProcessor<T> {
         return IsisContext.getServiceRegistry().lookupServiceElseFail(IsisJdoSupport_v3_2.class);
     }
 
-
+    protected static ObjectAdapterProvider objectAdapterProvider() { 
+        return IsisContext.getObjectAdapterProvider();
+    }
+    
+    
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java
index eb5957d..b26a5e4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandExecutorServiceDefault.java
@@ -70,13 +70,13 @@ import org.apache.isis.schema.utils.CommonDtoUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import lombok.extern.slf4j.Slf4j;
+
 @Singleton
+@Slf4j
 public class CommandExecutorServiceDefault implements CommandExecutorService {
 
-    private final static Logger LOG = LoggerFactory.getLogger(CommandExecutorServiceDefault.class);
-
     @Override
-    @Programmatic
     public void executeCommand(
             final CommandExecutorService.SudoPolicy sudoPolicy,
             final CommandWithDto commandWithDto) {
@@ -133,7 +133,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
 
         org.apache.isis.applib.annotation.CommandExecuteIn executeIn = commandWithDto.getExecuteIn();
 
-        LOG.info("Executing: {} {} {} {}", executeIn, commandWithDto.getMemberIdentifier(), commandWithDto.getTimestamp(), commandWithDto.getUniqueId());
+        log.info("Executing: {} {} {} {}", executeIn, commandWithDto.getMemberIdentifier(), commandWithDto.getTimestamp(), commandWithDto.getUniqueId());
 
         RuntimeException exceptionIfAny = null;
 
@@ -218,7 +218,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
 
         } catch (RuntimeException ex) {
 
-            LOG.warn("Exception when executing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
+            log.warn("Exception when executing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
 
             exceptionIfAny = ex;
         }
@@ -228,7 +228,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
             transactionService.nextTransaction(TransactionService.Policy.ALWAYS);
         } catch(RuntimeException ex) {
 
-            LOG.warn("Exception when committing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
+            log.warn("Exception when committing : {} {}", executeIn, commandWithDto.getMemberIdentifier(), ex);
 
             if(exceptionIfAny == null) {
                 exceptionIfAny = ex;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java
index aa52027..d8c956b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectContextBase.java
@@ -1,7 +1,5 @@
 package org.apache.isis.core.runtime.system.context.session;
 
-import java.util.function.Supplier;
-
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.commons.internal.base._Lazy;
@@ -39,7 +37,7 @@ public abstract class ManagedObjectContextBase implements ManagedObjectContext {
     @Getter protected final ServiceRegistry serviceRegistry;
     @Getter protected final SpecificationLoader specificationLoader;
     @Getter protected final AuthenticationSession authenticationSession;
-    @Getter protected final Supplier<ObjectAdapterProvider> objectAdapterProvider;
+    @Getter protected final ObjectAdapterProvider objectAdapterProvider;
     
     // -- NO ARG CONSTRUCTOR
     
@@ -49,14 +47,14 @@ public abstract class ManagedObjectContextBase implements ManagedObjectContext {
         serviceRegistry = IsisContext.getServiceRegistry();
         specificationLoader = IsisContext.getSpecificationLoader();
         authenticationSession = IsisContext.getAuthenticationSession().orElse(null);
-        objectAdapterProvider = IsisContext::getObjectAdapterProvider;
+        objectAdapterProvider = IsisContext.getObjectAdapterProvider();
     }
     
     // -- OBJECT ADAPTER SUPPORT
     
     @Override
     public ObjectAdapter adapterOfPojo(Object pojo) {
-		return objectAdapterProvider.get().adapterFor(pojo);
+		return objectAdapterProvider.adapterFor(pojo);
 	}
     
     @Override //FIXME [2033] decouple from JDO
@@ -94,7 +92,7 @@ public abstract class ManagedObjectContextBase implements ManagedObjectContext {
     
     @Override
     public ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec) {
-		return ps().newTransientInstance(domainTypeSpec);
+		return objectAdapterProvider.newTransientInstance(domainTypeSpec);
 	}
 	
     @Override
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java
index e4ebbfc..a13c7de 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/session/ManagedObjectPersistence.java
@@ -26,7 +26,6 @@ public interface ManagedObjectPersistence {
 
 	// 
 	
-	ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec);
 	void makePersistentInTransaction(ObjectAdapter objectAdapter);
 	Object fetchPersistentPojoInTransaction(RootOid rootOid);
 	
@@ -41,10 +40,6 @@ public interface ManagedObjectPersistence {
 	static ManagedObjectPersistence of(PersistenceSession persistenceSession) {
 		return new ManagedObjectPersistence() {
 			
-			@Override
-			public ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec) {
-				return persistenceSession.newTransientInstance(domainTypeSpec);
-			}
 			
 			@Override
 			public void makePersistentInTransaction(ObjectAdapter objectAdapter) {
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 7fc764f..eb7665f 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
@@ -24,7 +24,6 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterByIdProvider;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ManagedObjectState;
@@ -38,7 +37,7 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 
 public interface PersistenceSession 
 extends 
-    ObjectAdapterProvider.Delegating, //TODO [2033] remove this interface
+    //ObjectAdapterProvider.Delegating, //TODO [2033] remove this interface
     ObjectAdapterByIdProvider.Delegating, //TODO [2033] remove this interface
     TransactionalResource { //TODO [2033] remove this interface
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
index d8defbe..88ce463 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSession.java
@@ -56,7 +56,7 @@ public class IsisSession extends ManagedObjectContextBase {
 				IsisContext.getServiceRegistry(),
 				IsisContext.getSpecificationLoader(),
 				authenticationSession,
-				IsisContext::getObjectAdapterProvider);
+				IsisContext.getObjectAdapterProvider());
 		
 		this.persistenceSession =
                 persistenceSessionFactory.createPersistenceSession(authenticationSession);
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
index b997cb4..eab072b 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
@@ -100,7 +100,7 @@ public interface ObjectAdapterMemento extends Serializable {
 	
 	static ObjectAdapterMemento ofPojo(Object pojo) {
 		val isisSession = IsisSession.currentIfAny();
-		val adapterProvider = isisSession.getObjectAdapterProvider().get();
+		val adapterProvider = isisSession.getObjectAdapterProvider();
 		val objectAdapter = adapterProvider.adapterFor(pojo);
 		return ofAdapter(objectAdapter);
 	}