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/15 17:14:27 UTC

[isis] branch 2033-IoC updated: ISIS-2033: PersistenceServiceInternal* removed

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 0303c76  ISIS-2033: PersistenceServiceInternal* removed
0303c76 is described below

commit 0303c76271d76429b00fe48018ada2b34ae20f1b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Feb 15 18:14:22 2019 +0100

    ISIS-2033: PersistenceServiceInternal* removed
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
 .../applib/services/xactn/TransactionService.java  |  7 ++++++
 .../org/apache/isis/config/AppConfigLocator.java   |  3 ++-
 .../isis/core/metamodel/MetaModelContext.java      | 16 ++++++--------
 .../isis/core/metamodel/MetaModelContexts.java     |  6 +++---
 .../metamodel/adapter/ObjectAdapterProvider.java   |  9 ++++++++
 ...ctionInvocationFacetForDomainEventAbstract.java |  7 +-----
 ...tySetterOrClearFacetForDomainEventAbstract.java |  3 ++-
 ...rnal.java => ObjectAdapterProviderService.java} |  9 +-------
 .../services/title/TitleServiceDefault.java        |  6 ++----
 .../specimpl/ObjectActionParameterAbstract.java    |  7 +-----
 .../ObjectActionParameterContributeeAbstract.java  |  4 +++-
 .../OneToManyActionParameterContributee.java       |  3 ++-
 .../OneToOneActionParameterContributee.java        |  3 ++-
 .../facets/AbstractFacetFactoryJUnit4TestCase.java |  4 ++--
 .../metamodel/facets/AbstractFacetFactoryTest.java |  6 +++---
 .../parseable/ParseableFacetUsingParserTest.java   |  4 ++--
 .../ValueSemanticsProviderAbstractTestCase.java    |  4 ++--
 .../SpecificationLoaderTestAbstract.java           |  8 +++----
 .../specimpl/ObjectAssociationAbstractTest.java    |  4 ++--
 ...ObjectAssociationAbstractTest_alwaysHidden.java |  4 ++--
 ...ObjectAdapterContext_ObjectAdapterProvider.java | 14 ++++++++++--
 .../runtime/system/ObjectMemberAbstractTest.java   |  4 ++--
 .../WrapperFactoryDefaultTest_wrappedObject.java   |  6 +++---
 ...FactoryDefaultTest_wrappedObject_transient.java |  6 +++---
 .../runtime/system/ObjectMemberAbstractTest.java   |  4 ++--
 .../WrapperFactoryDefaultTest_wrappedObject.java   |  6 +++---
 ...FactoryDefaultTest_wrappedObject_transient.java |  6 +++---
 .../isis/core/wrapper/WrapperFactoryDefault.java   | 16 +++-----------
 .../handlers/DomainObjectInvocationHandler.java    |  6 +-----
 .../bookmarks/BookmarkServiceInternalDefault.java  |  3 ---
 .../factory/FactoryServiceInternalDefault.java     | 10 +--------
 ...va => ObjectAdapterProviderServiceDefault.java} | 25 +++-------------------
 .../services/xactn/TransactionServiceDefault.java  | 11 ++++++++++
 .../system/transaction/IsisTransaction.java        |  9 ++++----
 .../system/transaction/IsisTransactionManager.java |  8 +++----
 .../system/ObjectActionLayoutXmlDefaultTest.java   |  4 ++--
 .../system/OneToManyAssociationDefaultTest.java    |  4 ++--
 37 files changed, 118 insertions(+), 141 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java b/core/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java
index 2d78feb..ad57590 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/xactn/TransactionService.java
@@ -20,6 +20,7 @@
 package org.apache.isis.applib.services.xactn;
 
 import java.util.concurrent.CountDownLatch;
+import java.util.function.Supplier;
 
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.command.CommandContext;
@@ -110,10 +111,16 @@ public interface TransactionService {
      */
     void nextTransaction(Policy policy, Command command);
 
+    void executeWithinTransaction(Runnable task);
+    <T> T executeWithinTransaction(Supplier<T> task);
 
     public enum Policy {
         UNLESS_MARKED_FOR_ABORT,
         ALWAYS
     }
+    
+    
+
+
 
 }
diff --git a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
index 1d15646..c5e6274 100644
--- a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
+++ b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
@@ -80,7 +80,8 @@ public final class AppConfigLocator {
     		"org.apache.isis.applib.services.user.UserService",
     		"org.apache.isis.applib.services.xactn.TransactionService",
     		
-    		"org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal",
+    		"org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService",
+    		
     		"org.apache.isis.applib.services.wrapper.WrapperFactory",
     		"org.apache.isis.core.runtime.services.bookmarks.BookmarkServiceInternalDefault",
     		
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java
index e66c1e8..1e29b91 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContext.java
@@ -23,11 +23,11 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.applib.services.xactn.TransactionState;
 import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
@@ -68,11 +68,10 @@ public interface MetaModelContext {
 
     ObjectSpecification getSpecification(Class<?> type);
     
-    @Deprecated //TODO[2033] replace with getRepositoryService()
-    PersistenceSessionServiceInternal getPersistenceSessionServiceInternal();
-    
     RepositoryService getRepositoryService();
     
+    TransactionService getTransactionService();
+    
     TransactionState getTransactionState();
 
     // -- PRESET INSTANCES
@@ -140,11 +139,6 @@ public interface MetaModelContext {
             return getMetaModelContext().getSpecification(type);
         }
         
-        @Deprecated
-        public default PersistenceSessionServiceInternal getPersistenceSessionServiceInternal() {
-            return getMetaModelContext().getPersistenceSessionServiceInternal();
-        }
-        
         public default RepositoryService getRepositoryService() {
             return getMetaModelContext().getRepositoryService();
         }
@@ -153,6 +147,10 @@ public interface MetaModelContext {
             return getMetaModelContext().getTransactionState();
         }
         
+        public default TransactionService getTransactionService() {
+            return getMetaModelContext().getTransactionService();
+        }
+        
     }
 
    
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java
index f65e2a0..bc11729 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/MetaModelContexts.java
@@ -29,7 +29,7 @@ import org.apache.isis.commons.internal.cdi._CDI;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.config.internal._Config;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
@@ -89,8 +89,8 @@ public final class MetaModelContexts {
         _CDI.getSingleton(TitleService.class);
 
         @Getter(lazy=true) 
-        private final PersistenceSessionServiceInternal persistenceSessionServiceInternal =
-        _CDI.getSingleton(PersistenceSessionServiceInternal.class);
+        private final ObjectAdapterProviderService objectAdapterProviderService =
+        _CDI.getSingleton(ObjectAdapterProviderService.class);
 
         @Getter(lazy=true) 
         private final RepositoryService repositoryService =
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 ca927a2..fec2471 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
@@ -40,6 +40,8 @@ public interface ObjectAdapterProvider {
      * @return standalone (value) or root adapter
      */
     @Nullable ObjectAdapter adapterFor(@Nullable Object domainObject);
+    
+    @Nullable ObjectAdapter adapterForServicePojo(Object servicePojo);
 
     /**
      * @return collection adapter.
@@ -101,6 +103,10 @@ 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,
@@ -138,6 +144,9 @@ public interface ObjectAdapterProvider {
         }
         
     }
+
+
+	
     
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index f5f09ec..99769cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -50,7 +50,6 @@ import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.applib.services.metamodel.MetaModelService.Mode;
 import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.commons.exceptions.IsisException;
@@ -135,7 +134,7 @@ implements ImperativeFacet {
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         final ObjectAdapter executionResult = 
-                getPersistenceSessionServiceInternal().executeWithinTransaction(()->
+        		getTransactionService().executeWithinTransaction(()->
                     doInvoke(owningAction, targetAdapter, mixedInAdapter, argumentAdapters, interactionInitiatedBy));
         
         PersistableTypeGuard.instate(executionResult);
@@ -423,10 +422,6 @@ implements ImperativeFacet {
         return serviceRegistry.lookupServiceElseFail(MetaModelService.class);
     }
 
-    private TransactionService getTransactionService() {
-        return serviceRegistry.lookupServiceElseFail(TransactionService.class);
-    }
-
     private BookmarkService getBookmarkService() {
         return serviceRegistry.lookupServiceElseFail(BookmarkService.class);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
index d2fe800..bbe3028 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
@@ -153,7 +153,8 @@ extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>> {
             final InteractionInitiatedBy interactionInitiatedBy) {
 
         final ObjectAdapter mixedInAdapter = null;
-        getPersistenceSessionServiceInternal().executeWithinTransaction(()->{
+        
+        getTransactionService().executeWithinTransaction(()->{
             doSetOrClearProperty(style, owningProperty, targetAdapter, mixedInAdapter, newValueAdapter, interactionInitiatedBy);
         });
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/ObjectAdapterProviderService.java
similarity index 78%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/ObjectAdapterProviderService.java
index 6ef32fe..eec3365 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/ObjectAdapterProviderService.java
@@ -16,16 +16,9 @@
  */
 package org.apache.isis.core.metamodel.services.persistsession;
 
-import java.util.function.Supplier;
-
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 
-public interface PersistenceSessionServiceInternal extends ObjectAdapterProvider.Delegating {
-    
-    // -- TRANSACTIONS
-
-    void executeWithinTransaction(Runnable task);
+public interface ObjectAdapterProviderService extends ObjectAdapterProvider.Delegating {
     
-    <T> T executeWithinTransaction(Supplier<T> task);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
index a5736ec..c51bff9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitleServiceDefault.java
@@ -27,12 +27,11 @@ import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 
 @Singleton
 public class TitleServiceDefault implements TitleService {
 
-    @Programmatic
     @Override
     public String titleOf(final Object domainObject) {
         final ObjectAdapter objectAdapter = getObjectAdapterProvider().adapterFor(unwrapped(domainObject));
@@ -44,7 +43,6 @@ public class TitleServiceDefault implements TitleService {
         }
     }
 
-    @Programmatic
     @Override
     public String iconNameOf(final Object domainObject) {
         final ObjectAdapter objectAdapter = getObjectAdapterProvider().adapterFor(unwrapped(domainObject));
@@ -63,7 +61,7 @@ public class TitleServiceDefault implements TitleService {
         return sessionServiceInternal;
     }
     
-    @Inject PersistenceSessionServiceInternal sessionServiceInternal;
+    @Inject ObjectAdapterProviderService sessionServiceInternal;
     @Inject WrapperFactory wrapperFactory;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index bd4f2a3..931a94e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -50,7 +50,7 @@ import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefau
 import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
 import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -512,10 +512,5 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
         return parentAction.getObjectAdapterProvider();
     }
 
-    protected PersistenceSessionServiceInternal getObjectPersistor() {
-        return parentAction.getPersistenceSessionServiceInternal();
-    }
-
-
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
index 9865105e..36f67e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
@@ -19,6 +19,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 import java.util.List;
 
 import org.apache.isis.core.commons.lang.ListExtensions;
+import org.apache.isis.core.metamodel.MetaModelContext;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -54,7 +55,8 @@ implements ObjectActionParameterContributee {
     }
 
     protected ObjectAdapter getServiceAdapter() {
-        return getObjectPersistor().adapterFor(servicePojo);
+    	return MetaModelContext.current().getObjectAdapterProvider()
+    	.adapterForServicePojo(servicePojo);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
index 5d3ca65..0c94636 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
@@ -30,7 +30,8 @@ implements OneToManyActionParameter {
             final ObjectActionParameterAbstract serviceActionParameter,
             final int contributeeParamNumber,
             final ObjectActionContributee contributeeAction) {
-        super(FeatureType.ACTION_PARAMETER_COLLECTION, servicePojo, serviceActionParameter, contributeeParamNumber, contributeeAction);
+        super(FeatureType.ACTION_PARAMETER_COLLECTION, servicePojo, 
+        		serviceActionParameter, contributeeParamNumber, contributeeAction);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
index f6fc3ef..ef95b8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
@@ -28,7 +28,8 @@ implements OneToOneActionParameter {
             final ObjectActionParameterAbstract serviceActionParameter,
             final int contributeeParamNumber,
             final ObjectActionContributee contributeeAction) {
-        super(FeatureType.ACTION_PARAMETER_SCALAR, servicePojo, serviceActionParameter, contributeeParamNumber, contributeeAction);
+        super(FeatureType.ACTION_PARAMETER_SCALAR, servicePojo, 
+        		serviceActionParameter, contributeeParamNumber, contributeeAction);
     }
 
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index 6d2697f..d36a424 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -40,7 +40,7 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
@@ -58,7 +58,7 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     @Mock
     protected SpecificationLoader mockSpecificationLoader;
     @Mock
-    protected PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    protected ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     protected MethodRemover mockMethodRemover;
     @Mock
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index abeb75e..27aea20 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
@@ -67,7 +67,7 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
     protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
     protected AuthenticationSession mockAuthenticationSession;
 
-    protected PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    protected ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
 
     protected SpecificationLoader mockSpecificationLoader;
     protected ProgrammableMethodRemover methodRemover;
@@ -112,7 +112,7 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         mockTranslationService = context.mock(TranslationService.class);
         mockAuthenticationSession = context.mock(AuthenticationSession.class);
 
-        mockPersistenceSessionServiceInternal = context.mock(PersistenceSessionServiceInternal.class);
+        mockPersistenceSessionServiceInternal = context.mock(ObjectAdapterProviderService.class);
 
         mockSpecificationLoader = context.mock(SpecificationLoader.class);
         
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
index 1d8b860..d76cdf6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
@@ -20,7 +20,7 @@ package org.apache.isis.core.metamodel.facets.object.parseable;
 
 import java.util.IllegalFormatWidthException;
 
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
 
 import org.jmock.Expectations;
@@ -52,7 +52,7 @@ public class ParseableFacetUsingParserTest {
     @Mock
     private ServiceInjector mockServicesInjector;
     @Mock
-    private PersistenceSessionServiceInternal mockAdapterManager;
+    private ObjectAdapterProviderService mockAdapterManager;
 
     private ParseableFacetUsingParser parseableFacetUsingParser;
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index ecdd9b1..3818bad 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.facets.object.encodeable.encoder.Encodable
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -65,7 +65,7 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
     @Mock
     protected ServiceInjector mockServicesInjector;
     @Mock
-    protected PersistenceSessionServiceInternal mockSessionServiceInternal;
+    protected ObjectAdapterProviderService mockSessionServiceInternal;
     @Mock
     protected SpecificationLoader mockSpecificationLoader;
     @Mock
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
index 452f099..6d6c10a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -46,7 +46,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
 import org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract.DeprecatedPolicy;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
 import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
@@ -73,8 +73,8 @@ abstract class SpecificationLoaderTestAbstract {
         }
         
         @Produces
-        PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal() {
-            return Mockito.mock(PersistenceSessionServiceInternal.class);
+        ObjectAdapterProviderService mockPersistenceSessionServiceInternal() {
+            return Mockito.mock(ObjectAdapterProviderService.class);
         }
         
         @Produces
@@ -114,7 +114,7 @@ abstract class SpecificationLoaderTestAbstract {
     
     @Inject protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Inject protected GridService2 mockGridService;
-    @Inject protected PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    @Inject protected ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Inject protected MessageService mockMessageService;
     @Inject protected SpecificationLoader specificationLoader;
     
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
index df673ae..1915617 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
@@ -40,7 +40,7 @@ import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedF
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -64,7 +64,7 @@ public class ObjectAssociationAbstractTest {
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
 
 
     public static class Customer {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index d238861..82b81cb 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -42,7 +42,7 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -67,7 +67,7 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
 
     public static class Customer {
         public String getFirstName() {
diff --git a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
index 94e96be..d9fd057 100644
--- a/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
+++ b/core/plugins/jdo-common/src/main/java/org/apache/isis/jdo/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
@@ -27,6 +27,7 @@ import java.util.stream.Stream;
 
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.commons.internal.debug._Probe;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.MetaModelContext;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -55,8 +56,8 @@ import lombok.val;
  */
 class ObjectAdapterContext_ObjectAdapterProvider implements ObjectAdapterProvider {
     
-    @SuppressWarnings("unused")
-    private static final Logger LOG = LoggerFactory.getLogger(ObjectAdapterContext_ObjectAdapterProvider.class);
+	private final static _Probe probe = _Probe.unlimited().label("ObjectAdapterContext_ObjectAdapterProvider");
+    
     private final ObjectAdapterContext objectAdapterContext;
 //    private final PersistenceSession persistenceSession;
     private final ServiceInjector serviceInjector;
@@ -100,11 +101,18 @@ class ObjectAdapterContext_ObjectAdapterProvider implements ObjectAdapterProvide
         	return oidProviderForManagedContexts.adapterFor(managedObject, resolver);
         }
         
+        probe.println("[2033] we should not need to fall through here any longer");
+        
         final RootOid rootOid = oidFactory.oidFor(pojo);
         final ObjectAdapter newAdapter = objectAdapterContext.getFactories().createRootAdapter(pojo, rootOid);
         return objectAdapterContext.injectServices(newAdapter);
     }
     
+	@Override
+	public ObjectAdapter adapterForServicePojo(Object servicePojo) {
+		return adapterFor(servicePojo);
+	}
+    
     
     @Override
     public ObjectAdapter adapterForCollection(Object pojo, RootOid parentOid, OneToManyAssociation collection) {
@@ -174,6 +182,8 @@ class ObjectAdapterContext_ObjectAdapterProvider implements ObjectAdapterProvide
         })
         .collect(Collectors.toMap(ServiceUtil::idOfAdapter, v->v, (o,n)->n, LinkedHashMap::new));
     }
+
+
     
    
 }
\ No newline at end of file
diff --git a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index e2434a4..b9cd033 100644
--- a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -48,7 +48,7 @@ import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServiceInjectorBuilder_forTesting;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.services.registry.ServiceRegistryBuilder_forTesting;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -85,7 +85,7 @@ public class ObjectMemberAbstractTest {
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     private AuthenticationSession mockAuthenticationSession;
     @Mock
diff --git a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 4729ff1..c0699c8 100644
--- a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -55,7 +55,7 @@ import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInit
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -91,7 +91,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     private MessageService mockMessageService;
     @Mock
@@ -235,7 +235,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
 
         wrapperFactory = createWrapperFactory();
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
+//        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.isisSessionFactory = mockIsisSessionFactory;
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
 
diff --git a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index b63e71d..74637f1 100644
--- a/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/plugins/jdo-datanucleus-4/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -51,7 +51,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -79,7 +79,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
@@ -127,7 +127,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
         wrapperFactory = createWrapperFactory();
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
+//        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.isisSessionFactory = mockIsisSessionFactory;
 
         context.checking(new Expectations() {
diff --git a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
index 6ee7de6..926b1ce 100644
--- a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/runtime/system/ObjectMemberAbstractTest.java
@@ -48,7 +48,7 @@ import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.UsabilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.services.ServiceInjectorBuilder_forTesting;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.services.registry.ServiceRegistryBuilder_forTesting;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -85,7 +85,7 @@ public class ObjectMemberAbstractTest {
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     private AuthenticationSession mockAuthenticationSession;
     @Mock
diff --git a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 0a1978d..38df08d 100644
--- a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -55,7 +55,7 @@ import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInit
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -91,7 +91,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     private MessageService mockMessageService;
     @Mock
@@ -235,7 +235,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
 
         wrapperFactory = createWrapperFactory();
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
+//        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.isisSessionFactory = mockIsisSessionFactory;
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
 
diff --git a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index db10eac..10322ac 100644
--- a/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/plugins/jdo-datanucleus-5/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -51,7 +51,7 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -79,7 +79,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     private AuthenticationSessionProvider mockAuthenticationSessionProvider;
 
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
@@ -127,7 +127,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
         wrapperFactory = createWrapperFactory();
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
+//        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.isisSessionFactory = mockIsisSessionFactory;
 
         context.checking(new Expectations() {
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
index f9cb302..0ef6523 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
@@ -51,7 +51,6 @@ import org.apache.isis.applib.services.wrapper.events.PropertyUsabilityEvent;
 import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
 import org.apache.isis.applib.services.wrapper.listeners.InteractionListener;
 import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
@@ -316,17 +315,8 @@ public class WrapperFactoryDefault implements WrapperFactory {
         dispatcher.dispatch(interactionEvent);
     }
 
-
-    @Inject
-    AuthenticationSessionProvider authenticationSessionProvider;
-
-    @Inject
-    PersistenceSessionServiceInternal persistenceSessionServiceInternal;
-
-    @Inject
-    IsisSessionFactory isisSessionFactory;
-
-    @Inject
-    FactoryService factoryService;
+    @Inject AuthenticationSessionProvider authenticationSessionProvider;
+    @Inject IsisSessionFactory isisSessionFactory;
+    @Inject FactoryService factoryService;
 
 }
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
index 4c9e84f..1a5700c 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -56,7 +56,7 @@ import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet.Intent;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -959,9 +959,5 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     protected ObjectAdapterProvider getObjectAdapterProvider() {
         return objectAdapterProvider;
     }
-    
-    protected PersistenceSessionServiceInternal getPersistenceSessionService() {
-        return (PersistenceSessionServiceInternal) objectAdapterProvider;
-    }
 
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/bookmarks/BookmarkServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
index 16c6768..e770ff4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
@@ -40,7 +40,6 @@ import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.tree.TreeState;
 import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.commons.internal.base._With;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections._Sets;
@@ -51,7 +50,6 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.Oid.Factory;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.exceptions.persistence.ObjectNotFoundException;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -273,7 +271,6 @@ public class BookmarkServiceInternalDefault implements BookmarkService, Serializ
 
     // -- INJECTION
 
-    @Inject PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     @Inject SpecificationLoader specificationLoader;
     @Inject WrapperFactory wrapperFactory;
     @Inject ServiceRegistry serviceRegistry;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/factory/FactoryServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/factory/FactoryServiceInternalDefault.java
index 619ebbc..e951d3d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/factory/FactoryServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/factory/FactoryServiceInternalDefault.java
@@ -26,13 +26,11 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import org.apache.isis.applib.NonRecoverableException;
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -43,13 +41,11 @@ import lombok.val;
 public class FactoryServiceInternalDefault implements FactoryService {
 
 
-    @Programmatic
     @Override
-    @SuppressWarnings("unchecked")
     public <T> T instantiate(final Class<T> domainClass) {
         final ObjectSpecification spec = specificationLoader.loadSpecification(domainClass);
         final ObjectAdapter adapter = doCreateTransientInstance(spec);
-        return (T) adapter.getPojo();
+        return _Casts.uncheckedCast(adapter.getPojo());
     }
 
     /**
@@ -61,14 +57,11 @@ public class FactoryServiceInternalDefault implements FactoryService {
     }
 
 
-    @Programmatic
     @Override
     public <T> T m(final Class<T> mixinClass, final Object mixedIn) {
         return mixin(mixinClass, mixedIn);
     }
 
-
-    @Programmatic
     @Override
     public <T> T mixin(final Class<T> mixinClass, final Object mixedIn) {
         final ObjectSpecification objectSpec = specificationLoader.loadSpecification(mixinClass);
@@ -99,6 +92,5 @@ public class FactoryServiceInternalDefault implements FactoryService {
 
     @Inject SpecificationLoader specificationLoader;
     @Inject ServiceInjector serviceInjector;
-    @Inject PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/ObjectAdapterProviderServiceDefault.java
similarity index 69%
rename from core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
rename to core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/ObjectAdapterProviderServiceDefault.java
index 2177342..2b3760d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/ObjectAdapterProviderServiceDefault.java
@@ -21,38 +21,24 @@ package org.apache.isis.core.runtime.services.persistsession;
 import static java.util.Objects.requireNonNull;
 import static java.util.Optional.ofNullable;
 
-import java.util.function.Supplier;
-
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 
-@Singleton
-public class PersistenceSessionServiceInternalDefault implements PersistenceSessionServiceInternal {
+@Singleton //FIXME [2033] this should replace the ObjectAdapterContext_ObjectAdapterProvider
+public class ObjectAdapterProviderServiceDefault implements ObjectAdapterProviderService {
 
     @Override
     public ObjectAdapterProvider getObjectAdapterProvider() {
         return getPersistenceSession();
     }
 
-    @Override
-    public void executeWithinTransaction(Runnable task) {
-        getTransactionManager().executeWithinTransaction(task);
-    }
-    
-    @Override
-    public <T> T executeWithinTransaction(Supplier<T> task) {
-        return getTransactionManager().executeWithinTransaction(task);
-    }
-
     protected PersistenceSession getPersistenceSession() {
         return ofNullable(getIsisSessionFactory().getCurrentSession())
                 .map(IsisSession::getPersistenceSession)
@@ -63,11 +49,6 @@ public class PersistenceSessionServiceInternalDefault implements PersistenceSess
         return requireNonNull(isisSessionFactory, "IsisSessionFactory was not injected.");
     }
 
-    public IsisTransactionManager getTransactionManager() {
-        return getPersistenceSession().getTransactionManager();
-    }
-
-    @Inject SpecificationLoader specificationLoader;
     @Inject IsisSessionFactory isisSessionFactory;
 
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xactn/TransactionServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xactn/TransactionServiceDefault.java
index 38af9bb..a939fdf 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xactn/TransactionServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/xactn/TransactionServiceDefault.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.runtime.services.xactn;
 
 import java.util.concurrent.CountDownLatch;
+import java.util.function.Supplier;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -108,6 +109,16 @@ public class TransactionServiceDefault implements TransactionService {
         IsisTransaction.State state = transaction.getState();
         return state.getTransactionState();
     }
+    
+	@Override
+	public void executeWithinTransaction(Runnable task) {
+		isisTransactionManager().executeWithinTransaction(task);
+	}
+
+	@Override
+	public <T> T executeWithinTransaction(Supplier<T> task) {
+		return isisTransactionManager().executeWithinTransaction(task);
+	}
 
     @Inject IsisSessionFactory isisSessionFactory;
     
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index 669d1af..45a2df4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -39,7 +39,6 @@ import org.apache.isis.core.runtime.persistence.transaction.CreateObjectCommand;
 import org.apache.isis.core.runtime.persistence.transaction.DestroyObjectCommand;
 import org.apache.isis.core.runtime.persistence.transaction.PersistenceCommand;
 import org.apache.isis.core.runtime.services.auditing.AuditingServiceInternal;
-import org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -177,15 +176,15 @@ public class IsisTransaction implements TransactionScopedComponent, Transaction
     public IsisTransaction(
             final UUID interactionId,
             final int sequence,
-            final ServiceRegistry serviceRegistry) {
+            final ServiceRegistry serviceRegistry, 
+            IsisTransactionManager transactionManager) {
 
         this.interactionId = interactionId;
         this.sequence = sequence;
         //        this.authenticationSession = authenticationSession;
 
-        final PersistenceSessionServiceInternalDefault persistenceSessionService = serviceRegistry
-                .lookupServiceElseFail(PersistenceSessionServiceInternalDefault.class);
-        this.transactionManager = persistenceSessionService.getTransactionManager();
+        
+        this.transactionManager = transactionManager;
 
         //        this.messageBroker = authenticationSession.getMessageBroker();
         this.publishingServiceInternal = serviceRegistry.lookupServiceElseFail(PublishingServiceInternal.class);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
index 5f10341..b19b6bf 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransactionManager.java
@@ -134,7 +134,7 @@ public class IsisTransactionManager {
     public void executeWithinTransaction(
             final Command existingCommandIfAny,
             final Runnable task) {
-        final boolean initiallyInTransaction = inTransaction();
+        final boolean initiallyInTransaction = isInTransaction();
         if (!initiallyInTransaction) {
             startTransaction(existingCommandIfAny);
         }
@@ -181,7 +181,7 @@ public class IsisTransactionManager {
     public <Q> Q executeWithinTransaction(
             final Command existingCommandIfAny,
             final Supplier<Q> task) {
-        final boolean initiallyInTransaction = inTransaction();
+        final boolean initiallyInTransaction = isInTransaction();
         if (!initiallyInTransaction) {
             startTransaction(existingCommandIfAny);
         }
@@ -202,7 +202,7 @@ public class IsisTransactionManager {
         }
     }
 
-    public boolean inTransaction() {
+    public boolean isInTransaction() {
         return getCurrentTransaction() != null && !getCurrentTransaction().getState().isComplete();
     }
 
@@ -240,7 +240,7 @@ public class IsisTransactionManager {
             final UUID transactionId = command.getUniqueId();
 
             this.currentTransaction = new IsisTransaction(transactionId,
-                    interaction.next(Interaction.Sequence.TRANSACTION.id()), serviceRegistry);
+                    interaction.next(Interaction.Sequence.TRANSACTION.id()), serviceRegistry, this);
             transactionLevel = 0;
 
             persistenceSession.startTransaction();
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
index 4eca47c..1160560 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionLayoutXmlDefaultTest.java
@@ -31,7 +31,7 @@ import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;
 import org.apache.isis.core.security.authentication.AuthenticationSessionProvider;
@@ -61,7 +61,7 @@ public class ObjectActionLayoutXmlDefaultTest {
     @Mock
     private MessageService mockMessageService;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
 
     private ServiceInjector stubServicesInjector;
 
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
index 7b751be..ef90b33 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/OneToManyAssociationDefaultTest.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
-import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.services.persistsession.ObjectAdapterProviderService;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -73,7 +73,7 @@ public class OneToManyAssociationDefaultTest {
     @Mock
     private MessageService mockMessageService;
     @Mock
-    private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+    private ObjectAdapterProviderService mockPersistenceSessionServiceInternal;
     @Mock
     private FacetedMethod mockPeer;
     @Mock