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/10/29 20:00:05 UTC

[isis] branch v2 updated (fab2ea6 -> 40f2adc)

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

ahuber pushed a change to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from fab2ea6  ISIS-2158: more fixes
     new 0ae09b6  ISIS-2158: remove remaining uses of ObjectAdapter in wicket viewer
     new 6182c06  ISIS-2158: removing uses of ObjectAdapterProvider
     new 40f2adc  ISIS-2158: fixing issues after last commit

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../isis/applib/services/iactn/Interaction.java    |   1 +
 .../apache/isis/metamodel/MetaModelContext.java    |  24 ++---
 .../isis/metamodel/MetaModelContext_usingIoc.java  |   4 +-
 .../isis/metamodel/adapter/ObjectAdapter.java      |  59 +-----------
 .../isis/metamodel/facets/CollectionUtils.java     |  10 +-
 ...ctionInvocationFacetForDomainEventAbstract.java |  22 ++---
 .../collections/CollectionFacetAbstract.java       |   4 +-
 .../CollectionAccessorFacetViaAccessor.java        |   4 +-
 .../javautilcollection/JavaArrayFacet.java         |  10 +-
 .../javautilcollection/JavaCollectionFacet.java    |  14 +--
 .../autocomplete/AutoCompleteFacetAbstract.java    |  17 ++--
 .../choices/ChoicesFacetFromBoundedAbstract.java   |   2 +-
 .../facets/object/encodeable/EncodableFacet.java   |   3 +-
 .../object/encodeable/EncodableFacetAbstract.java  |   2 +-
 .../encoder/EncodableFacetUsingEncoderDecoder.java |   8 +-
 .../metamodel/facets/object/mixin/MixinFacet.java  |   3 +-
 .../facets/object/mixin/MixinFacetAbstract.java    |   8 +-
 .../object/parseable/ParseableFacetAbstract.java   |   6 +-
 .../parser/ParseableFacetUsingParser.java          |  13 ++-
 ...ObjectFacetDeclarativeInitializingAbstract.java |  37 ++++----
 .../annotation/TitleFacetViaTitleAnnotation.java   |   6 +-
 .../ValueSemanticsProviderAndFacetAbstract.java    |  10 +-
 .../ActionParameterAutoCompleteFacetViaMethod.java |   4 +-
 .../method/ActionChoicesFacetViaMethod.java        |   4 +-
 .../ActionParameterChoicesFacetViaMethod.java      |   4 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |   4 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |   6 +-
 .../method/PropertyChoicesFacetViaMethod.java      |   2 +-
 ...pertyDefaultFacetDerivedFromDefaultedFacet.java |   2 +-
 .../method/PropertyDefaultFacetViaMethod.java      |   2 +-
 .../DateAndTimeValueSemanticsProviderAbstract.java |   4 +-
 .../ValueSemanticsProviderAbstractTemporal.java    |  12 ++-
 .../BooleanPrimitiveValueSemanticsProvider.java    |   3 +-
 .../facets/value/booleans/BooleanValueFacet.java   |   5 -
 .../facets/value/bytes/ByteValueFacet.java         |   7 +-
 .../bytes/ByteValueSemanticsProviderAbstract.java  |  12 ++-
 .../chars/CharPrimitiveValueSemanticsProvider.java |   4 +-
 .../facets/value/chars/CharValueFacet.java         |   7 +-
 .../chars/CharValueSemanticsProviderAbstract.java  |   8 +-
 .../facets/value/color/ColorValueFacet.java        |   7 +-
 .../value/color/ColorValueSemanticsProvider.java   |  12 ++-
 .../facets/value/date/DateValueFacet.java          |   6 +-
 .../datejdk8local/Jdk8LocalDateValueFacet.java     |   6 +-
 .../Jdk8LocalDateValueSemanticsProvider.java       |  12 ++-
 .../datejodalocal/JodaLocalDateValueFacet.java     |   6 +-
 .../JodaLocalDateValueSemanticsProvider.java       |   8 +-
 .../Jdk8LocalDateTimeValueFacet.java               |   6 +-
 .../Jdk8LocalDateTimeValueSemanticsProvider.java   |   8 +-
 .../JodaLocalDateTimeValueFacet.java               |   6 +-
 .../JodaLocalDateTimeValueSemanticsProvider.java   |  12 ++-
 .../doubles/DoubleFloatingPointValueFacet.java     |   7 +-
 .../DoublePrimitiveValueSemanticsProvider.java     |   4 +-
 .../DoubleValueSemanticsProviderAbstract.java      |  12 ++-
 .../DoubleWrapperValueSemanticsProvider.java       |   3 +-
 .../FloatPrimitiveValueSemanticsProvider.java      |   4 +-
 .../FloatValueSemanticsProviderAbstract.java       |  12 ++-
 .../value/floats/FloatingPointValueFacet.java      |   6 +-
 .../value/image/ImageValueSemanticsProvider.java   |   2 +-
 .../JavaAwtImageValueSemanticsProvider.java        |   5 +-
 .../IntPrimitiveValueSemanticsProvider.java        |   4 +-
 .../integer/IntValueSemanticsProviderAbstract.java |   8 +-
 .../facets/value/integer/IntegerValueFacet.java    |   7 +-
 .../localrespath/LocalResourcePathValueFacet.java  |   7 +-
 .../LocalResourcePathValueSemanticsProvider.java   |   8 +-
 .../facets/value/longs/LongValueFacet.java         |   7 +-
 .../longs/LongValueSemanticsProviderAbstract.java  |   8 +-
 .../facets/value/markup/MarkupValueFacet.java      |   7 +-
 .../value/markup/MarkupValueSemanticsProvider.java |  12 ++-
 .../facets/value/money/MoneyValueFacet.java        |   8 +-
 .../value/money/MoneyValueSemanticsProvider.java   |  10 +-
 .../facets/value/password/PasswordValueFacet.java  |   8 +-
 .../password/PasswordValueSemanticsProvider.java   |  14 +--
 .../PercentageValueSemanticsProvider.java          |  10 +-
 .../facets/value/shortint/ShortValueFacet.java     |   7 +-
 .../ShortValueSemanticsProviderAbstract.java       |   8 +-
 .../facets/value/string/StringValueFacet.java      |   7 +-
 .../value/string/StringValueSemanticsProvider.java |   8 +-
 .../metamodel/facets/value/url/URLValueFacet.java  |   7 +-
 .../value/url/URLValueSemanticsProvider.java       |   8 +-
 .../facets/value/uuid/UUIDValueFacet.java          |   7 +-
 .../value/uuid/UUIDValueSemanticsProvider.java     |   8 +-
 .../loader => objectmanager}/ObjectLoader.java     |   4 +-
 .../ObjectLoader_builder.java}                     |   8 +-
 .../ObjectLoader_builtinHandlers.java              |   6 +-
 .../metamodel/objectmanager/ObjectManager.java     |  62 ++++++++++++
 .../objectmanager/ObjectManager_default.java       |  21 ++---
 .../apache/isis/metamodel/spec/ManagedObject.java  | 104 +++++++++++++++++----
 .../specimpl/ObjectActionContributee.java          |   2 +-
 .../specloader/specimpl/ObjectActionDefault.java   |   2 +-
 .../specimpl/ObjectActionParameterAbstract.java    |  14 +--
 .../ObjectActionParameterContributeeAbstract.java  |   2 +-
 .../specimpl/OneToManyAssociationContributee.java  |   2 +-
 .../specimpl/OneToManyAssociationDefault.java      |  30 +++---
 .../specimpl/OneToOneAssociationContributee.java   |   5 +-
 .../specimpl/OneToOneAssociationDefault.java       |  24 ++---
 .../metamodel/MetaModelContext_forTesting.java     |  30 +++---
 .../metamodel/facets/AbstractFacetFactoryTest.java |   2 +-
 .../metamodel/facets/ObjectAdapterUtilsTest.java   |   4 +-
 .../collections/JavaCollectionFacetTest.java       |   2 +-
 .../TitleFacetViaTitleAnnotationTest.java          |  25 ++---
 .../parseable/ParseableFacetUsingParserTest.java   |   2 +-
 .../SpecificationLoaderTestAbstract.java           |   2 +-
 .../runtime/system/ObjectMemberAbstractTest.java   |   2 +-
 .../WrapperFactoryDefaultTest_wrappedObject.java   |  98 ++++++++-----------
 ...FactoryDefaultTest_wrappedObject_transient.java |  29 +++---
 .../apache/isis/wrapper/WrapperFactoryDefault.java |   3 +-
 .../DelegatingInvocationHandlerDefault.java        |   4 +-
 .../handlers/DomainObjectInvocationHandler.java    |  68 +++++++-------
 .../ixn/InteractionDtoServiceInternalDefault.java  |   3 +-
 .../services/publish/PublishedObjectsDefault.java  |   1 +
 .../webapp/context/IsisWebAppCommonContext.java    |   2 +-
 .../isis/webapp/modules/WebModuleContext.java      |   7 --
 .../memento/ObjectAdapterMementoDefault.java       |  26 +++---
 .../ObjectAdapterMementoSupport_usingDefault.java  |   2 +-
 .../isis/runtime/memento/StandaloneData.java       |   2 +-
 .../system/context/session/RuntimeContext.java     |   1 -
 .../system/context/session/RuntimeContextBase.java |  14 +--
 .../ObjectAdapterContext_MementoSupport.java       |  36 ++++---
 .../system/ObjectActionLayoutXmlDefaultTest.java   |   2 +-
 .../system/OneToManyAssociationDefaultTest.java    |  34 +++++--
 .../rendering/domainobjects/JsonValueEncoder.java  |   4 +-
 .../models/whereami/WhereAmIModelDefault.java      |   2 +-
 .../ScalarModel_isScalarSubtypingAnyOf_Test.java   |   6 +-
 .../scalars/ScalarPanelTextFieldAbstract.java      |  12 ++-
 .../entitysimplelink/EntityLinkSimplePanel.java    |   3 +-
 .../ObjectAdapterMementoProviderAbstract.java      |   2 +-
 .../widgets/zclip/ZeroClipboardPanel.java          |  10 +-
 .../viewer/wicket/ui/pages/entity/EntityPage.java  |   2 +-
 .../testdomain/auditing/AuditerServiceTest.java    |   4 +-
 .../SpringServiceProvisioningTest.java             |   2 +-
 .../bootstrapping/builtin-domain-services.list     |  27 ++++++
 .../sse/webapp/ServerSentEventsServlet.java        |  13 ++-
 132 files changed, 795 insertions(+), 658 deletions(-)
 rename core/metamodel/src/main/java/org/apache/isis/metamodel/{adapter/loader => objectmanager}/ObjectLoader.java (95%)
 rename core/metamodel/src/main/java/org/apache/isis/metamodel/{adapter/loader/ObjectLoader_Builder.java => objectmanager/ObjectLoader_builder.java} (87%)
 rename core/metamodel/src/main/java/org/apache/isis/metamodel/{adapter/loader => objectmanager}/ObjectLoader_builtinHandlers.java (97%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager.java
 copy examples/smoketests/src/main/java/org/apache/isis/testdomain/model/stereotypes/MyObject_mixin.java => core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager_default.java (67%)
 create mode 100644 examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-domain-services.list


[isis] 01/03: ISIS-2158: remove remaining uses of ObjectAdapter in wicket viewer

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0ae09b656613b176711c827839f2a7c2bd75134f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Oct 29 13:24:48 2019 +0100

    ISIS-2158: remove remaining uses of ObjectAdapter in wicket viewer
---
 .../isis/metamodel/adapter/ObjectAdapter.java      | 44 +------------------
 ...ctionInvocationFacetForDomainEventAbstract.java |  2 +-
 .../choices/ChoicesFacetFromBoundedAbstract.java   |  2 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |  2 +-
 .../apache/isis/metamodel/spec/ManagedObject.java  | 49 +++++++++++++++++++++-
 .../rendering/domainobjects/JsonValueEncoder.java  |  4 +-
 .../entitysimplelink/EntityLinkSimplePanel.java    |  3 +-
 .../ObjectAdapterMementoProviderAbstract.java      |  2 +-
 .../widgets/zclip/ZeroClipboardPanel.java          | 10 ++---
 .../viewer/wicket/ui/pages/entity/EntityPage.java  |  2 +-
 10 files changed, 63 insertions(+), 57 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
index bab04bc..092f0dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
@@ -25,7 +25,6 @@ import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.commons.internal.base._Tuples.Tuple2;
 import org.apache.isis.commons.internal.collections._Lists;
@@ -37,11 +36,7 @@ import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.MethodExtensions;
 import org.apache.isis.metamodel.commons.MethodUtil;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.metamodel.consent.InteractionResult;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
-import org.apache.isis.metamodel.interactions.InteractionUtils;
-import org.apache.isis.metamodel.interactions.ObjectVisibilityContext;
-import org.apache.isis.metamodel.interactions.VisibilityContext;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
@@ -173,48 +168,11 @@ public interface ObjectAdapter extends ManagedObject {
                 final InteractionInitiatedBy interactionInitiatedBy) {
 
             return objectAdapters
-                    .filter(adapter->isVisible(adapter, interactionInitiatedBy))
+                    .filter(adapter->ManagedObject.Visibility.isVisible(adapter, interactionInitiatedBy))
                     .collect(Collectors.toList());
         }
 
 
-        /**
-         * @param adapter - an adapter around the domain object whose visibility is being checked
-         * @param interactionInitiatedBy
-         */
-        public static boolean isVisible(
-                final ManagedObject adapter,
-                final InteractionInitiatedBy interactionInitiatedBy) {
-            
-            if(adapter == null) {
-                // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
-                return true;
-            }
-            if(ManagedObject._isDestroyed(adapter)) {
-                return false;
-            }
-            if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) { 
-                return true; 
-            }
-            return isVisibleForUser(adapter);
-        }
-
-        private static boolean isVisibleForUser(final ManagedObject adapter) {
-            final VisibilityContext<?> context = createVisibleInteractionContextForUser(adapter);
-            final ObjectSpecification objectSpecification = adapter.getSpecification();
-            final InteractionResult visibleResult = InteractionUtils.isVisibleResult(objectSpecification, context);
-            return visibleResult.isNotVetoing();
-        }
-
-        private static VisibilityContext<?> createVisibleInteractionContextForUser(
-                final ManagedObject objectAdapter) {
-            
-            return new ObjectVisibilityContext(
-                    objectAdapter,
-                    objectAdapter.getSpecification().getIdentifier(),
-                    InteractionInitiatedBy.USER,
-                    Where.OBJECT_FORMS);
-        }
     }
 
     boolean isTransient();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 21b9b6b..b388477 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -470,7 +470,7 @@ implements ImperativeFacet {
             return resultAdapter;
 
         } else {
-            boolean visible = ObjectAdapter.Util.isVisible(resultAdapter, interactionInitiatedBy);
+            boolean visible = ManagedObject.Visibility.isVisible(resultAdapter, interactionInitiatedBy);
             return visible ? resultAdapter : null;
         }
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index baa8508..819c46e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -111,7 +111,7 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
         val repository = context.getRepositoryService();
 
         final Predicate<ManagedObject> visibilityFilter = 
-                objectAdapter -> ObjectAdapter.Util.isVisible(objectAdapter, interactionInitiatedBy); 
+                objectAdapter -> ManagedObject.Visibility.isVisible(objectAdapter, interactionInitiatedBy); 
 
                 val query = new QueryFindAllChoices(getObjectSpecification().getFullIdentifier(), visibilityFilter);
                 return repository.allMatches(query).toArray();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 42a57fb..667fd19 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -75,7 +75,7 @@ implements ImperativeFacet {
         boolean filterForVisibility = super.getMetaModelContext().getConfiguration().getReflector().getFacet().isFilterVisibility();
         if(filterForVisibility) {
             final ObjectAdapter referencedAdapter = getObjectAdapterProvider().adapterFor(referencedObject);
-            final boolean visible = ObjectAdapter.Util
+            final boolean visible = ManagedObject.Visibility
                     .isVisible(referencedAdapter, interactionInitiatedBy);
             if (!visible) {
                 return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
index 19581e4..5881907 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
@@ -26,6 +26,7 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.domain.DomainObjectList;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -35,8 +36,13 @@ import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.adapter.oid.factory.OidFactory;
 import org.apache.isis.metamodel.adapter.version.Version;
+import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.metamodel.consent.InteractionResult;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.metamodel.facets.object.entity.EntityFacet;
+import org.apache.isis.metamodel.interactions.InteractionUtils;
+import org.apache.isis.metamodel.interactions.ObjectVisibilityContext;
+import org.apache.isis.metamodel.interactions.VisibilityContext;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.SpecificationLoaderDefault;
 
@@ -347,6 +353,48 @@ public interface ManagedObject {
         return null;
     }
     
+    // -- VISIBILITY UTILITIES
+    
+    static final class Visibility {
+        /**
+         * @param adapter - an adapter around the domain object whose visibility is being checked
+         * @param interactionInitiatedBy
+         */
+        public static boolean isVisible(
+                ManagedObject adapter,
+                InteractionInitiatedBy interactionInitiatedBy) {
+            
+            if(adapter == null) {
+                // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
+                return true;
+            }
+            if(ManagedObject._isDestroyed(adapter)) {
+                return false;
+            }
+            if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) { 
+                return true; 
+            }
+            return isVisibleForUser(adapter);
+        }
+
+        private static boolean isVisibleForUser(ManagedObject adapter) {
+            val visibilityContext = createVisibleInteractionContextForUser(adapter);
+            val spec = adapter.getSpecification();
+            final InteractionResult visibleResult = InteractionUtils.isVisibleResult(spec, visibilityContext);
+            return visibleResult.isNotVetoing();
+        }
+
+        private static VisibilityContext<?> createVisibleInteractionContextForUser(
+                ManagedObject objectAdapter) {
+            
+            return new ObjectVisibilityContext(
+                    objectAdapter,
+                    objectAdapter.getSpecification().getIdentifier(),
+                    InteractionInitiatedBy.USER,
+                    Where.OBJECT_FORMS);
+        }
+    }
+    
     // -- OID UTILITIES
     
     static final class Oids {
@@ -447,6 +495,5 @@ public interface ManagedObject {
 //                .map(ManagedObject.class::cast);
     }
 
-
     
  }
diff --git a/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java b/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index 789db17..518d3e0 100644
--- a/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++ b/core/viewer-restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -45,6 +45,7 @@ import static org.apache.isis.commons.internal.base._With.requires;
 
 import lombok.val;
 
+
 /**
  * Similar to Isis' value encoding, but with additional support for JSON
  * primitives.
@@ -57,7 +58,8 @@ public class JsonValueEncoder {
     @PostConstruct
     public void init() {
         
-        val pojoToAdapter = (Function<Object, ManagedObject>) pojo ->
+        //XXX no lombok val here
+        Function<Object, ManagedObject> pojoToAdapter = pojo ->
             ManagedObject.of(specificationLoader::loadSpecification, pojo);
         
         new JsonValueEncoder_Converters().asList(pojoToAdapter)
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
index 4ce0584..110f545 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
@@ -23,7 +23,6 @@ import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.FormComponentPanel;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -48,7 +47,7 @@ implements CancelHintRequired  {
 
     public EntityLinkSimplePanel(final String id, final EntityModel entityModel) {
         super(id, entityModel);
-        setType(ObjectAdapter.class);
+        setType(ManagedObject.class);
         buildGui();
     }
 
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
index 73d3925..5913b03 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
@@ -112,7 +112,7 @@ public abstract class ObjectAdapterMementoProviderAbstract extends ChoiceProvide
 
     /**
      * Filters all choices against a term by using their
-     * {@link org.apache.isis.metamodel.adapter.ObjectAdapter#titleString(org.apache.isis.metamodel.adapter.ObjectAdapter) title string}
+     * {@link ManagedObject#titleString(ManagedObject) title string}
      *
      * @param term The term entered by the user
      * @param choicesMementos The collections of choices to filter
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
index 90d3a64..0e037d4 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
@@ -25,7 +25,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ObjectAdapterModel;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
@@ -40,7 +40,7 @@ public class ZeroClipboardPanel extends PanelAbstract<ObjectAdapterModel> {
     private static final String ID_COPY_LINK = "copyLink";
     private static final String ID_SIMPLE_CLIPBOARD_MODAL_WINDOW = "simpleClipboardModalWindow";
 
-    private AjaxLink<ObjectAdapter> copyLink;
+    private AjaxLink<ManagedObject> copyLink;
     private SimpleClipboardModalWindow simpleClipboardModalWindow;
 
     public ZeroClipboardPanel(String id, ObjectAdapterModel entityModel) {
@@ -67,12 +67,12 @@ public class ZeroClipboardPanel extends PanelAbstract<ObjectAdapterModel> {
         setVisibilityAllowed(false);
     }
 
-    private AjaxLink<ObjectAdapter> createLink(String linkId) {
+    private AjaxLink<ManagedObject> createLink(String linkId) {
         return newSimpleClipboardLink(linkId);
     }
 
-    private AjaxLink<ObjectAdapter> newSimpleClipboardLink(String linkId) {
-        return new AjaxLink<ObjectAdapter>(linkId) {
+    private AjaxLink<ManagedObject> newSimpleClipboardLink(String linkId) {
+        return new AjaxLink<ManagedObject>(linkId) {
             private static final long serialVersionUID = 1L;
 
             @Override
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index c90e59c..a68f1e9 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -181,7 +181,7 @@ public class EntityPage extends PageAbstract {
         }
 
         // check that the entity overall can be viewed.
-        if(!ObjectAdapter.Util.isVisible(objectAdapter, InteractionInitiatedBy.USER)) {
+        if(!ManagedObject.Visibility.isVisible(objectAdapter, InteractionInitiatedBy.USER)) {
             throw new ObjectMember.AuthorizationException();
         }
 


[isis] 03/03: ISIS-2158: fixing issues after last commit

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 40f2adc64132de9551c4a8a5226f7da2a004b236
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Oct 29 20:59:51 2019 +0100

    ISIS-2158: fixing issues after last commit
---
 .../isis/applib/services/iactn/Interaction.java    |  1 +
 .../isis/metamodel/adapter/ObjectAdapter.java      | 17 ++----------
 ...ctionInvocationFacetForDomainEventAbstract.java |  8 ++----
 .../autocomplete/AutoCompleteFacetAbstract.java    |  8 +++---
 .../apache/isis/metamodel/spec/ManagedObject.java  |  6 ++++
 .../metamodel/facets/ObjectAdapterUtilsTest.java   |  4 +--
 .../ixn/InteractionDtoServiceInternalDefault.java  |  3 +-
 .../isis/webapp/modules/WebModuleContext.java      |  7 -----
 .../system/OneToManyAssociationDefaultTest.java    | 32 ++++++++++++++++------
 .../sse/webapp/ServerSentEventsServlet.java        | 13 ++++++++-
 10 files changed, 54 insertions(+), 45 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
index 73dda2c..ec7df6d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
@@ -347,6 +347,7 @@ public class Interaction implements HasUniqueId {
                 final Object target,
                 final String targetMember,
                 final String targetClass) {
+            
             this.interaction = interaction;
             this.interactionType = interactionType;
             this.memberIdentifier = memberIdentifier;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
index 092f0dd..3c5c784 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapter.java
@@ -157,22 +157,11 @@ public interface ObjectAdapter extends ManagedObject {
                 final ManagedObject collectionAdapter,
                 final InteractionInitiatedBy interactionInitiatedBy) {
 
-            final Stream<ManagedObject> objectAdapters = 
-                    CollectionFacet.Utils.streamAdapters(collectionAdapter);
-
-            return visibleAdapters(objectAdapters, interactionInitiatedBy);
+            return CollectionFacet.Utils.streamAdapters(collectionAdapter)
+            .filter(ManagedObject.Visibility.filterOn(interactionInitiatedBy))
+            .collect(Collectors.toList());
         }
 
-        public static List<ManagedObject> visibleAdapters(
-                final Stream<ManagedObject> objectAdapters,
-                final InteractionInitiatedBy interactionInitiatedBy) {
-
-            return objectAdapters
-                    .filter(adapter->ManagedObject.Visibility.isVisible(adapter, interactionInitiatedBy))
-                    .collect(Collectors.toList());
-        }
-
-
     }
 
     boolean isTransient();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 9cd4a37..9e4e51f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -52,7 +52,6 @@ import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.commons.internal.ioc.BeanSort;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.commons.MethodInvocationPreprocessor;
 import org.apache.isis.metamodel.commons.ThrowableExtensions;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
@@ -72,7 +71,6 @@ import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
 
 import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
 
 import lombok.val;
 
@@ -450,12 +448,10 @@ implements ImperativeFacet {
 
             final Stream<ManagedObject> adapters = CollectionFacet.Utils.streamAdapters(resultAdapter);
 
-            final List<ManagedObject> visibleAdapters =
-                    ObjectAdapter.Util.visibleAdapters(adapters, interactionInitiatedBy);
-
             final Object visibleObjects =
                     CollectionUtils.copyOf(
-                            stream(visibleAdapters)
+                            adapters
+                            .filter(ManagedObject.Visibility.filterOn(interactionInitiatedBy))
                             .map(ManagedObject::unwrapPojo)
                             .collect(Collectors.toList()),
                             method.getReturnType());
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index 8079138..6e7ddae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -24,9 +24,8 @@ import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Stream;
+import java.util.stream.Collectors;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
@@ -95,9 +94,10 @@ implements AutoCompleteFacet {
             return Collections.emptyList();
         }
 
-        final Stream<ManagedObject> adapterList = CollectionFacet.Utils.streamAdapters(resultAdapter) ;
+        return CollectionFacet.Utils.streamAdapters(resultAdapter)
+        .filter(ManagedObject.Visibility.filterOn(interactionInitiatedBy))
+        .collect(Collectors.toList());
 
-        return ObjectAdapter.Util.visibleAdapters(adapterList, interactionInitiatedBy);
     }
 
     private Object getRepository() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
index 4f6dc13..349bb86 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -372,6 +373,11 @@ public interface ManagedObject {
     // -- VISIBILITY UTILITIES
     
     static final class Visibility {
+        
+        public static Predicate<? super ManagedObject> filterOn(InteractionInitiatedBy interactionInitiatedBy) {
+            return $->ManagedObject.Visibility.isVisible($, interactionInitiatedBy);
+        }
+        
         /**
          * @param adapter - an adapter around the domain object whose visibility is being checked
          * @param interactionInitiatedBy
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/ObjectAdapterUtilsTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/ObjectAdapterUtilsTest.java
index 43b1af3..ff9c3f0 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/ObjectAdapterUtilsTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/ObjectAdapterUtilsTest.java
@@ -24,7 +24,6 @@ import org.jmock.auto.Mock;
 import org.junit.Rule;
 import org.junit.Test;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -37,8 +36,7 @@ public class ObjectAdapterUtilsTest {
     @Rule
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
 
-    @Mock
-    private ObjectAdapter mockObjectAdapter;
+    @Mock private ManagedObject mockObjectAdapter;
 
     private Object underlyingDomainObject;
 
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
index 797b7d4..81537da 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
@@ -30,7 +30,6 @@ import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.iactn.Interaction;
 import org.apache.isis.applib.services.iactn.InteractionContext;
 import org.apache.isis.applib.services.user.UserService;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.metamodel.services.ixn.InteractionDtoServiceInternal;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -72,7 +71,7 @@ public class InteractionDtoServiceInternalDefault implements InteractionDtoServi
 
         final ActionDto actionDto = new ActionDto();
         commandDtoServiceInternal.addActionArgs(
-                objectAction, actionDto, argumentAdapters.toArray(new ObjectAdapter[]{}));
+                objectAction, actionDto, argumentAdapters.toArray(new ManagedObject[]{}));
         final List<ParamDto> parameterDtos = CommandDtoUtils.parametersFor(actionDto).getParameter();
 
         return InteractionDtoUtils.newActionInvocation(
diff --git a/core/runtime-web/src/main/java/org/apache/isis/webapp/modules/WebModuleContext.java b/core/runtime-web/src/main/java/org/apache/isis/webapp/modules/WebModuleContext.java
index 4abecf2..a76b692 100644
--- a/core/runtime-web/src/main/java/org/apache/isis/webapp/modules/WebModuleContext.java
+++ b/core/runtime-web/src/main/java/org/apache/isis/webapp/modules/WebModuleContext.java
@@ -49,13 +49,6 @@ import lombok.extern.log4j.Log4j2;
 @Log4j2 @RequiredArgsConstructor
 public class WebModuleContext {
 
-    //    /**
-    //     * This key was deprecated from config, but we still use it for reference. It is auto-populated 
-    //     * such that it can be looked up, to see what viewers have been discovered by the framework.
-    //     */
-    //    private final static String ISIS_VIEWERS = "isis.viewers";
-    //    private final static String ISIS_PROTECTED = "isis.protected";
-
     private boolean hasBootstrapper = false;
     private final StringBuilder viewers = new StringBuilder();
     private final StringBuilder protectedPath = new StringBuilder();
diff --git a/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
index 401562f..5c5c082 100644
--- a/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
@@ -28,13 +28,13 @@ import org.junit.Test;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionAddToFacet;
 import org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
@@ -62,10 +62,11 @@ public class OneToManyAssociationDefaultTest {
     @Rule
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
-    @Mock private ObjectAdapter mockOwnerAdapter;
-    @Mock private ObjectAdapter mockAssociatedAdapter;
+    @Mock private ManagedObject mockOwnerAdapter;
+    @Mock private ManagedObject mockAssociatedAdapter;
     @Mock private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock private SpecificationLoader mockSpecificationLoader;
+    @Mock private ObjectSpecification mockOwnerAdapterSpec;
     @Mock private MessageService mockMessageService;
     @Mock private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock private FacetedMethod mockPeer;
@@ -126,14 +127,29 @@ public class OneToManyAssociationDefaultTest {
                 oneOf(mockPeer).containsFacet(NotPersistedFacet.class);
                 will(returnValue(false));
 
-//                oneOf(mockOwnerAdapter).promote();
-//                will(returnValue(mockOwnerAdapter));
+                oneOf(mockOwnerAdapter).getSpecification();
+                will(returnValue(mockOwnerAdapterSpec));
                 
-                oneOf(mockOwnerAdapter).isRepresentingPersistent();
+                oneOf(mockOwnerAdapterSpec).isManagedBean();
+                will(returnValue(false));
+                
+                oneOf(mockOwnerAdapterSpec).isViewModel();
                 will(returnValue(true));
-
-                oneOf(mockAssociatedAdapter).isTransient();
+                
+                oneOf(mockOwnerAdapterSpec).isParented();
                 will(returnValue(false));
+                
+                oneOf(mockOwnerAdapterSpec).isEntity();
+                will(returnValue(false));
+                
+                oneOf(mockAssociatedAdapter).getSpecification();
+                will(returnValue(mockOwnerAdapterSpec));
+                
+//                oneOf(mockOwnerAdapter).isRepresentingPersistent();
+//                will(returnValue(true));
+//
+//                oneOf(mockAssociatedAdapter).isTransient();
+//                will(returnValue(false));
 
                 oneOf(mockPeer).getFacet(CollectionAddToFacet.class);
                 will(returnValue(mockCollectionAddToFacet));
diff --git a/extensions/sse/src/main/java/org/apache/isis/extensions/sse/webapp/ServerSentEventsServlet.java b/extensions/sse/src/main/java/org/apache/isis/extensions/sse/webapp/ServerSentEventsServlet.java
index 67e8b2b..f247ac9 100644
--- a/extensions/sse/src/main/java/org/apache/isis/extensions/sse/webapp/ServerSentEventsServlet.java
+++ b/extensions/sse/src/main/java/org/apache/isis/extensions/sse/webapp/ServerSentEventsServlet.java
@@ -36,6 +36,9 @@ import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.extensions.sse.api.SseChannel;
 import org.apache.isis.extensions.sse.api.SseService;
 import org.apache.isis.extensions.sse.markup.ListeningMarkup;
+import org.apache.isis.webapp.IsisWebAppUtils;
+
+import static org.apache.isis.commons.internal.base._With.requires;
 
 import lombok.val;
 
@@ -58,6 +61,13 @@ public class ServerSentEventsServlet extends HttpServlet {
     public void init() throws ServletException {
         super.init();
         threadPool = ForkJoinPool.commonPool();
+        
+        if(sseService==null) {
+            sseService = IsisWebAppUtils.getManagedBean(SseService.class, super.getServletContext());  
+        }
+
+        requires(sseService, "sseService");
+        
     }
 
     @Override
@@ -151,7 +161,8 @@ public class ServerSentEventsServlet extends HttpServlet {
         }
         try {
             return Optional.of(_Context.loadClass(eventStreamId));
-        } catch (Exception e) {
+        } catch (Throwable e) {
+            e.printStackTrace();
             return Optional.empty();
         }
     }


[isis] 02/03: ISIS-2158: removing uses of ObjectAdapterProvider

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6182c06bb1ea46bb7c0a628e3cfdd8db987a4ae9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Oct 29 19:52:18 2019 +0100

    ISIS-2158: removing uses of ObjectAdapterProvider
---
 .../apache/isis/metamodel/MetaModelContext.java    | 24 ++----
 .../isis/metamodel/MetaModelContext_usingIoc.java  |  4 +-
 .../isis/metamodel/facets/CollectionUtils.java     | 10 +--
 ...ctionInvocationFacetForDomainEventAbstract.java | 12 +--
 .../collections/CollectionFacetAbstract.java       |  4 +-
 .../CollectionAccessorFacetViaAccessor.java        |  4 +-
 .../javautilcollection/JavaArrayFacet.java         | 10 ++-
 .../javautilcollection/JavaCollectionFacet.java    | 14 ++--
 .../autocomplete/AutoCompleteFacetAbstract.java    |  9 +-
 .../facets/object/encodeable/EncodableFacet.java   |  3 +-
 .../object/encodeable/EncodableFacetAbstract.java  |  2 +-
 .../encoder/EncodableFacetUsingEncoderDecoder.java |  8 +-
 .../metamodel/facets/object/mixin/MixinFacet.java  |  3 +-
 .../facets/object/mixin/MixinFacetAbstract.java    |  8 +-
 .../object/parseable/ParseableFacetAbstract.java   |  6 +-
 .../parser/ParseableFacetUsingParser.java          | 13 +--
 ...ObjectFacetDeclarativeInitializingAbstract.java | 37 ++++----
 .../annotation/TitleFacetViaTitleAnnotation.java   |  6 +-
 .../ValueSemanticsProviderAndFacetAbstract.java    | 10 ++-
 .../ActionParameterAutoCompleteFacetViaMethod.java |  4 +-
 .../method/ActionChoicesFacetViaMethod.java        |  4 +-
 .../ActionParameterChoicesFacetViaMethod.java      |  4 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |  2 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |  6 +-
 .../method/PropertyChoicesFacetViaMethod.java      |  2 +-
 ...pertyDefaultFacetDerivedFromDefaultedFacet.java |  2 +-
 .../method/PropertyDefaultFacetViaMethod.java      |  2 +-
 .../DateAndTimeValueSemanticsProviderAbstract.java |  4 +-
 .../ValueSemanticsProviderAbstractTemporal.java    | 12 +--
 .../BooleanPrimitiveValueSemanticsProvider.java    |  3 +-
 .../facets/value/booleans/BooleanValueFacet.java   |  5 --
 .../facets/value/bytes/ByteValueFacet.java         |  7 +-
 .../bytes/ByteValueSemanticsProviderAbstract.java  | 12 +--
 .../chars/CharPrimitiveValueSemanticsProvider.java |  4 +-
 .../facets/value/chars/CharValueFacet.java         |  7 +-
 .../chars/CharValueSemanticsProviderAbstract.java  |  8 +-
 .../facets/value/color/ColorValueFacet.java        |  7 +-
 .../value/color/ColorValueSemanticsProvider.java   | 12 +--
 .../facets/value/date/DateValueFacet.java          |  6 +-
 .../datejdk8local/Jdk8LocalDateValueFacet.java     |  6 +-
 .../Jdk8LocalDateValueSemanticsProvider.java       | 12 +--
 .../datejodalocal/JodaLocalDateValueFacet.java     |  6 +-
 .../JodaLocalDateValueSemanticsProvider.java       |  8 +-
 .../Jdk8LocalDateTimeValueFacet.java               |  6 +-
 .../Jdk8LocalDateTimeValueSemanticsProvider.java   |  8 +-
 .../JodaLocalDateTimeValueFacet.java               |  6 +-
 .../JodaLocalDateTimeValueSemanticsProvider.java   | 12 +--
 .../doubles/DoubleFloatingPointValueFacet.java     |  7 +-
 .../DoublePrimitiveValueSemanticsProvider.java     |  4 +-
 .../DoubleValueSemanticsProviderAbstract.java      | 12 +--
 .../DoubleWrapperValueSemanticsProvider.java       |  3 +-
 .../FloatPrimitiveValueSemanticsProvider.java      |  4 +-
 .../FloatValueSemanticsProviderAbstract.java       | 12 +--
 .../value/floats/FloatingPointValueFacet.java      |  6 +-
 .../value/image/ImageValueSemanticsProvider.java   |  2 +-
 .../JavaAwtImageValueSemanticsProvider.java        |  5 +-
 .../IntPrimitiveValueSemanticsProvider.java        |  4 +-
 .../integer/IntValueSemanticsProviderAbstract.java |  8 +-
 .../facets/value/integer/IntegerValueFacet.java    |  7 +-
 .../localrespath/LocalResourcePathValueFacet.java  |  7 +-
 .../LocalResourcePathValueSemanticsProvider.java   |  8 +-
 .../facets/value/longs/LongValueFacet.java         |  7 +-
 .../longs/LongValueSemanticsProviderAbstract.java  |  8 +-
 .../facets/value/markup/MarkupValueFacet.java      |  7 +-
 .../value/markup/MarkupValueSemanticsProvider.java | 12 +--
 .../facets/value/money/MoneyValueFacet.java        |  8 +-
 .../value/money/MoneyValueSemanticsProvider.java   | 10 +--
 .../facets/value/password/PasswordValueFacet.java  |  8 +-
 .../password/PasswordValueSemanticsProvider.java   | 14 ++--
 .../PercentageValueSemanticsProvider.java          | 10 +--
 .../facets/value/shortint/ShortValueFacet.java     |  7 +-
 .../ShortValueSemanticsProviderAbstract.java       |  8 +-
 .../facets/value/string/StringValueFacet.java      |  7 +-
 .../value/string/StringValueSemanticsProvider.java |  8 +-
 .../metamodel/facets/value/url/URLValueFacet.java  |  7 +-
 .../value/url/URLValueSemanticsProvider.java       |  8 +-
 .../facets/value/uuid/UUIDValueFacet.java          |  7 +-
 .../value/uuid/UUIDValueSemanticsProvider.java     |  8 +-
 .../loader => objectmanager}/ObjectLoader.java     |  4 +-
 .../ObjectLoader_builder.java}                     |  8 +-
 .../ObjectLoader_builtinHandlers.java              |  6 +-
 .../metamodel/objectmanager/ObjectManager.java     | 62 ++++++++++++++
 .../ObjectManager_default.java}                    | 16 ++--
 .../apache/isis/metamodel/spec/ManagedObject.java  | 65 +++++++++-----
 .../specimpl/ObjectActionContributee.java          |  2 +-
 .../specloader/specimpl/ObjectActionDefault.java   |  2 +-
 .../specimpl/ObjectActionParameterAbstract.java    | 14 ++--
 .../ObjectActionParameterContributeeAbstract.java  |  2 +-
 .../specimpl/OneToManyAssociationContributee.java  |  2 +-
 .../specimpl/OneToManyAssociationDefault.java      | 30 ++++---
 .../specimpl/OneToOneAssociationContributee.java   |  5 +-
 .../specimpl/OneToOneAssociationDefault.java       | 24 ++----
 .../metamodel/MetaModelContext_forTesting.java     | 30 +++----
 .../metamodel/facets/AbstractFacetFactoryTest.java |  2 +-
 .../collections/JavaCollectionFacetTest.java       |  2 +-
 .../TitleFacetViaTitleAnnotationTest.java          | 25 +++---
 .../parseable/ParseableFacetUsingParserTest.java   |  2 +-
 .../SpecificationLoaderTestAbstract.java           |  2 +-
 .../runtime/system/ObjectMemberAbstractTest.java   |  2 +-
 .../WrapperFactoryDefaultTest_wrappedObject.java   | 98 +++++++++-------------
 ...FactoryDefaultTest_wrappedObject_transient.java | 29 ++++---
 .../apache/isis/wrapper/WrapperFactoryDefault.java |  3 +-
 .../DelegatingInvocationHandlerDefault.java        |  4 +-
 .../handlers/DomainObjectInvocationHandler.java    | 68 +++++++--------
 .../services/publish/PublishedObjectsDefault.java  |  1 +
 .../webapp/context/IsisWebAppCommonContext.java    |  2 +-
 .../memento/ObjectAdapterMementoDefault.java       | 26 +++---
 .../ObjectAdapterMementoSupport_usingDefault.java  |  2 +-
 .../isis/runtime/memento/StandaloneData.java       |  2 +-
 .../system/context/session/RuntimeContext.java     |  1 -
 .../system/context/session/RuntimeContextBase.java | 14 ++--
 .../ObjectAdapterContext_MementoSupport.java       | 36 ++++----
 .../system/ObjectActionLayoutXmlDefaultTest.java   |  2 +-
 .../system/OneToManyAssociationDefaultTest.java    |  2 +-
 .../models/whereami/WhereAmIModelDefault.java      |  2 +-
 .../ScalarModel_isScalarSubtypingAnyOf_Test.java   |  6 +-
 .../scalars/ScalarPanelTextFieldAbstract.java      | 12 +--
 .../testdomain/auditing/AuditerServiceTest.java    |  4 +-
 .../SpringServiceProvisioningTest.java             |  2 +-
 .../bootstrapping/builtin-domain-services.list     | 27 ++++++
 120 files changed, 688 insertions(+), 559 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java
index 09d1d1c..3853853 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext.java
@@ -30,8 +30,7 @@ import org.apache.isis.applib.services.xactn.TransactionState;
 import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -60,8 +59,8 @@ public interface MetaModelContext {
      */
     IsisConfiguration getConfiguration();
 
-    ObjectAdapterProvider getObjectAdapterProvider();
-
+    ObjectManager getObjectManager();
+    
     ServiceInjector getServiceInjector();
 
     ServiceRegistry getServiceRegistry();
@@ -88,8 +87,6 @@ public interface MetaModelContext {
 
     HomePageAction getHomePageAction();
 
-    ObjectLoader getObjectLoader();
-    
     @Deprecated
     Stream<ObjectAdapter> streamServiceAdapters();
     
@@ -124,11 +121,6 @@ public interface MetaModelContext {
         }
 
         @Override
-        public default ObjectAdapterProvider getObjectAdapterProvider() {
-            return getMetaModelContext().getObjectAdapterProvider();
-        }
-
-        @Override
         public default ServiceInjector getServiceInjector() {
             return getMetaModelContext().getServiceInjector();
         }
@@ -197,12 +189,12 @@ public interface MetaModelContext {
             return getMetaModelContext().getTransactionService();
         }
 
-        @Override
+        @Override @Deprecated
         public default Stream<ObjectAdapter> streamServiceAdapters() {
             return getMetaModelContext().streamServiceAdapters();
         }
 
-        @Override
+        @Override @Deprecated
         default ObjectAdapter lookupServiceAdapterById(String serviceId) {
             return getMetaModelContext().lookupServiceAdapterById(serviceId);
         }
@@ -213,11 +205,13 @@ public interface MetaModelContext {
         }
         
         @Override
-        default ObjectLoader getObjectLoader() {
-            return getObjectLoader();
+        default ObjectManager getObjectManager() {
+            return getMetaModelContext().getObjectManager();
         }
 
     }
+
+    
     
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java
index cae7130..8335849 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/MetaModelContext_usingIoc.java
@@ -37,7 +37,7 @@ import org.apache.isis.commons.internal.ioc.IocContainer;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.ServiceUtil;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
 import org.apache.isis.metamodel.services.homepage.HomePageResolverService;
@@ -157,7 +157,7 @@ class MetaModelContext_usingIoc implements MetaModelContext {
     // -- OBJECT LOADING
     
     @Getter(onMethod = @__(@Override))
-    final ObjectLoader objectLoader = ObjectLoader.buildDefault(this);    
+    final ObjectManager objectManager = ObjectManager.of(this);    
 
     
     // -- HELPER
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java
index 7b91b2e..2832af7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/CollectionUtils.java
@@ -41,9 +41,9 @@ import org.apache.isis.commons.internal.base._With;
 import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
 public final class CollectionUtils {
@@ -54,9 +54,9 @@ public final class CollectionUtils {
     public static Object[] getCollectionAsObjectArray(
             final Object optionPojo, 
             final ObjectSpecification spec, 
-            final ObjectAdapterProvider adapterProvider) {
+            final ObjectManager objectManger) {
         
-        final ObjectAdapter collection = adapterProvider.adapterFor(optionPojo);
+        final ManagedObject collection = objectManger.adapt(optionPojo);
         final CollectionFacet facet = CollectionFacet.Utils.getCollectionFacetFromSpec(collection);
         
 //        {//TODO[2158] migrate
@@ -66,7 +66,7 @@ public final class CollectionUtils {
 //                    facet, collectionFacet);
 //        }
 
-        final Stream<ObjectAdapter> objectAdapters = 
+        final Stream<ManagedObject> objectAdapters = 
                 CollectionFacet.Utils.streamAdapters(collection);
 
         return objectAdapters
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index b388477..9cd4a37 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -176,7 +176,7 @@ implements ImperativeFacet {
                         "Unable to persist command for action '%s'; CommandService does not support persistent commands ",
                         actionId));
             }
-            returnedAdapter = getObjectAdapterProvider().adapterFor(command);
+            returnedAdapter = getObjectManager().adapt(command);
 
         } else {
             // otherwise, go ahead and execute action in the 'foreground'
@@ -185,7 +185,7 @@ implements ImperativeFacet {
             final Object mixinElseRegularPojo = ManagedObject.unwrapPojo(mixinElseRegularAdapter);
 
             final List<ManagedObject> argumentAdapterList = Arrays.asList(argumentAdapters);
-            final List<Object> argumentPojos = ObjectAdapter.Util.unwrapPojoList(argumentAdapterList);
+            final List<Object> argumentPojos = ManagedObject.unwrapPojoListElseEmpty(argumentAdapterList);
 
             final String targetMember = targetNameFor(owningAction, mixedInAdapter);
             final String targetClass = CommandUtil.targetClassNameFor(mixinElseRegularAdapter);
@@ -300,7 +300,7 @@ implements ImperativeFacet {
 
 
             final Object returnedPojo = priorExecution.getReturned();
-            returnedAdapter = getObjectAdapterProvider().adapterFor(returnedPojo);
+            returnedAdapter = getObjectManager().adapt(returnedPojo);
 
             // sync DTO with result
             getInteractionDtoServiceInternal()
@@ -371,7 +371,7 @@ implements ImperativeFacet {
         // to remove boilerplate from the domain, we automatically clone the returned object if it is a view model.
 
         if (resultPojo != null) {
-            final ManagedObject resultAdapter = getObjectAdapterProvider().adapterFor(resultPojo);
+            final ManagedObject resultAdapter = getObjectManager().adapt(resultPojo);
             return cloneIfViewModelElse(resultAdapter, resultAdapter);
         } else {
             // if void or null, attempt to clone the original target, else return null.
@@ -388,7 +388,7 @@ implements ImperativeFacet {
         final ViewModelFacet viewModelFacet = adapter.getSpecification().getFacet(ViewModelFacet.class);
         final Object clone = viewModelFacet.clone(adapter.getPojo());
 
-        final ManagedObject clonedAdapter = getObjectAdapterProvider().adapterFor(clone);
+        final ManagedObject clonedAdapter = getObjectManager().adapt(clone);
         return clonedAdapter;
     }
 
@@ -461,7 +461,7 @@ implements ImperativeFacet {
                             method.getReturnType());
 
             if (visibleObjects != null) {
-                return getObjectAdapterProvider().adapterFor(visibleObjects);
+                return getObjectManager().adapt(visibleObjects);
             }
 
             // would be null if unable to take a copy (unrecognized return type)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java
index de4fe31..48b47cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/CollectionFacetAbstract.java
@@ -24,7 +24,9 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
 
-public abstract class CollectionFacetAbstract extends FacetAbstract implements CollectionFacet {
+public abstract class CollectionFacetAbstract 
+extends FacetAbstract 
+implements CollectionFacet {
 
     public CollectionFacetAbstract(final FacetHolder holder) {
         super(CollectionFacet.class, holder, Derivation.NOT_DERIVED);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index ccbc9b1..8344841 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -34,6 +34,8 @@ import org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAc
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
+import lombok.val;
+
 public class CollectionAccessorFacetViaAccessor
 extends PropertyOrCollectionAccessorFacetAbstract
 implements ImperativeFacet {
@@ -71,7 +73,7 @@ implements ImperativeFacet {
             return null;
         }
 
-        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        val collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final boolean filterForVisibility = getConfiguration().getReflector().getFacet().isFilterVisibility();
         if(filterForVisibility) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
index 38533fe..c25996b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
@@ -22,8 +22,8 @@ package org.apache.isis.metamodel.facets.collections.javautilcollection;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
 
+import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.collections.CollectionFacetAbstract;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -32,6 +32,8 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
 import static org.apache.isis.commons.internal.base._NullSafe.isEmpty;
 import static org.apache.isis.commons.internal.collections._Arrays.toArray;
 
+import lombok.val;
+
 public class JavaArrayFacet extends CollectionFacetAbstract {
 
     public JavaArrayFacet(final FacetHolder holder) {
@@ -58,11 +60,11 @@ public class JavaArrayFacet extends CollectionFacetAbstract {
             return Stream.of();
         }
 
-        final ObjectAdapterProvider adapterProvider = getObjectAdapterProvider();
+        val objectManager = super.getObjectManager();
 
         return Stream.of(array)
-                .map(adapterProvider::adapterFor) //FIXME[ISIS-1976] we always generate an OA here
-                .map(x->(T)x);
+                .map(objectManager::adapt)
+                .map(x->_Casts.<T>uncheckedCast(x));
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
index 1295a96..f682455 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
@@ -25,12 +25,13 @@ import java.util.stream.Stream;
 
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.collections.CollectionFacetAbstract;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
+import lombok.val;
+
 public class JavaCollectionFacet extends CollectionFacetAbstract {
 
     public JavaCollectionFacet(final FacetHolder holder) {
@@ -58,20 +59,19 @@ public class JavaCollectionFacet extends CollectionFacetAbstract {
     @Override
     public <T extends ManagedObject> Stream<T> stream(T collectionAdapter) {
 
-        final ObjectAdapterProvider adapterProvider = getObjectAdapterProvider();
+        val objectManager = super.getObjectManager();
 
         return pojoCollection(collectionAdapter)
                 .stream()
-                .map(adapterProvider::adapterFor) //FIXME[ISIS-1976] we always generate an OA here
-                .map(x->(T)x);
+                .map(objectManager::adapt)
+                .map(x->_Casts.<T>uncheckedCast(x));
     }
 
     /**
      * The underlying collection of objects (not {@link ObjectAdapter}s).
      */
-    @SuppressWarnings("unchecked")
-    private Collection<? super Object> pojoCollection(final ManagedObject collectionAdapter) {
-        return (Collection<? super Object>) collectionAdapter.getPojo();
+    private Collection<?> pojoCollection(final ManagedObject collectionAdapter) {
+        return (Collection<?>) collectionAdapter.getPojo();
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index b7bc291..8079138 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -27,7 +27,6 @@ import java.util.Map;
 import java.util.stream.Stream;
 
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
@@ -37,13 +36,14 @@ import org.apache.isis.metamodel.facets.param.autocomplete.MinLengthUtil;
 import org.apache.isis.metamodel.services.publishing.PublishingServiceInternal;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements AutoCompleteFacet {
+public abstract class AutoCompleteFacetAbstract 
+extends FacetAbstract 
+implements AutoCompleteFacet {
 
     public static Class<? extends Facet> type() {
         return AutoCompleteFacet.class;
     }
 
-    private final ObjectAdapterProvider adapterProvider;
     private final Class<?> repositoryClass;
     private final Method repositoryMethod;
 
@@ -61,7 +61,6 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
 
         this.repositoryClass = repositoryClass;
         this.repositoryMethod = repositoryMethod;
-        this.adapterProvider = getObjectAdapterProvider();
     }
 
     public Class<?> getRepositoryClass() {
@@ -79,7 +78,7 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
                     @Override
                     public ManagedObject exec() {
                         final Object list = invoke();
-                        return adapterProvider.adapterFor(list);
+                        return getObjectManager().adapt(list);
                     }
 
                     private Object invoke()  {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java
index bc3088c..058a178 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacet.java
@@ -20,7 +20,6 @@
 package org.apache.isis.metamodel.facets.object.encodeable;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facets.MultipleValueFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
@@ -33,7 +32,7 @@ public interface EncodableFacet extends MultipleValueFacet {
      * Equivalent to {@link EncoderDecoder#fromEncodedString(String)}, though
      * may be implemented through some other equivalent mechanism.
      */
-    ObjectAdapter fromEncodedString(String encodedData);
+    ManagedObject fromEncodedString(String encodedData);
 
     /**
      * Equivalent to {@link EncoderDecoder#toEncodedString(Object)}, though may
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
index 1a113b7..8b81eb9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
@@ -74,7 +74,7 @@ public abstract class EncodableFacetAbstract extends FacetAbstract implements En
     }
 
     @Override
-    public ObjectAdapter fromEncodedString(final String encodedData) {
+    public ManagedObject fromEncodedString(final String encodedData) {
         return encodeableFacetUsingEncoderDecoder.fromEncodedString(encodedData);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
index bcf8234..d2ef0f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
@@ -27,7 +27,9 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements EncodableFacet {
+public class EncodableFacetUsingEncoderDecoder
+extends FacetAbstract
+implements EncodableFacet {
 
     private final EncoderDecoder<?> encoderDecoder;
 
@@ -46,14 +48,14 @@ public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements
     }
 
     @Override
-    public ObjectAdapter fromEncodedString(final String encodedData) {
+    public ManagedObject fromEncodedString(final String encodedData) {
         _Assert.assertNotNull(encodedData);
         if (ENCODED_NULL.equals(encodedData)) {
             return null;
         } else {
             getServiceInjector().injectServicesInto(encoderDecoder);
             final Object decodedObject = encoderDecoder.fromEncodedString(encodedData);
-            return getObjectAdapterProvider().adapterFor(decodedObject);
+            return getObjectManager().adapt(decodedObject);
         }
 
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java
index d376c1f..1c5749f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacet.java
@@ -27,7 +27,6 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Mixin;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facets.SingleValueFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -57,7 +56,7 @@ public interface MixinFacet extends SingleValueFacet<String> {
      * Returns the (adapter of the) domain object that is the <i>holder</i> of the 
      * given mix-in adapter.
      */
-    ObjectAdapter mixedIn(ManagedObject mixinAdapter, Policy policy);
+    ManagedObject mixedIn(ManagedObject mixinAdapter, Policy policy);
 
     /**
      * Returns the mix-in around the provided domain object (<i>holder</i>)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java
index a19bdda..6fbc5eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/mixin/MixinFacetAbstract.java
@@ -24,7 +24,6 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Map;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.SingleValueFacetAbstract;
@@ -33,7 +32,8 @@ import org.apache.isis.metamodel.spec.ManagedObject;
 import lombok.val;
 
 public abstract class MixinFacetAbstract 
-extends SingleValueFacetAbstract<String> implements MixinFacet {
+extends SingleValueFacetAbstract<String> 
+implements MixinFacet {
 
     private final Class<?> mixinType;
     private final Class<?> constructorType;
@@ -98,11 +98,11 @@ extends SingleValueFacetAbstract<String> implements MixinFacet {
     }
     
     @Override
-    public ObjectAdapter mixedIn(ManagedObject mixinAdapter, Policy policy) {
+    public ManagedObject mixedIn(ManagedObject mixinAdapter, Policy policy) {
         val mixinPojo = mixinAdapter.getPojo();
         val holderPojo = holderPojoFor(mixinPojo, policy);
         return holderPojo!=null
-                ? getObjectAdapterProvider().adapterFor(holderPojo)
+                ? getObjectManager().adapt(holderPojo)
                         : null;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java
index 581c195..1ce7dd6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetAbstract.java
@@ -28,7 +28,9 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class ParseableFacetAbstract extends FacetAbstract implements ParseableFacet {
+public abstract class ParseableFacetAbstract 
+extends FacetAbstract 
+implements ParseableFacet {
 
     private final Class<?> parserClass;
 
@@ -74,7 +76,7 @@ public abstract class ParseableFacetAbstract extends FacetAbstract implements Pa
     }
 
     @Override
-    public ObjectAdapter parseTextEntry(
+    public ManagedObject parseTextEntry(
             final ManagedObject original,
             final String entryText,
             final InteractionInitiatedBy interactionInitiatedBy) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index d4c70f2..ef8f8f6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -24,7 +24,6 @@ import java.util.IllegalFormatException;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.ParsingException;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.consent.InteractionResultSet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
@@ -39,7 +38,11 @@ import org.apache.isis.metamodel.interactions.ValidityContext;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
-public class ParseableFacetUsingParser extends FacetAbstract implements ParseableFacet {
+import lombok.val;
+
+public class ParseableFacetUsingParser
+extends FacetAbstract
+implements ParseableFacet {
 
     private final Parser<?> parser;
 
@@ -58,7 +61,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
     }
 
     @Override
-    public ObjectAdapter parseTextEntry(
+    public ManagedObject parseTextEntry(
             final ManagedObject contextAdapter,
             final String entry,
             final InteractionInitiatedBy interactionInitiatedBy) {
@@ -70,7 +73,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
         // check string is valid
         // (eg pick up any @RegEx on value type)
         if (getFacetHolder().containsFacet(ValueFacet.class)) {
-            final ObjectAdapter entryAdapter = getObjectAdapterProvider().adapterFor(entry);
+            val entryAdapter = getObjectManager().adapt(entry);
             final Identifier identifier = getIdentified().getIdentifier();
             final ParseValueContext parseValueContext =
                     new ParseValueContext(
@@ -91,7 +94,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
 
             // check resultant object is also valid
             // (eg pick up any validate() methods on it)
-            final ObjectAdapter adapter = getObjectAdapterProvider().adapterFor(parsed);
+            val adapter = getObjectManager().adapt(parsed);
             final ObjectSpecification specification = adapter.getSpecification();
             final ObjectValidityContext validateContext =
                     specification.createValidityInteractionContext(
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 6c8cc82..cd3ab74 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -29,7 +29,6 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.Contributed;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
 
@@ -42,6 +41,7 @@ extends RecreatableObjectFacetAbstract {
             final FacetHolder holder,
             final RecreationMechanism recreationMechanism,
             final PostConstructMethodCache postConstructMethodCache) {
+        
         super(holder, recreationMechanism, postConstructMethodCache);
     }
 
@@ -60,12 +60,12 @@ extends RecreatableObjectFacetAbstract {
             return;
         }
 
-        val viewModelAdapter = getObjectAdapterProvider()
-                .adapterForViewModel(viewModelPojo, mementoStr);
+        val objectManager = super.getObjectManager();
+        val spec = objectManager.loadSpec(viewModelPojo);
+        val viewModelAdapter = ManagedObject.of(spec, viewModelPojo); 
 
-        viewModelAdapter.injectServices(getServiceInjector());
-
-        val spec = viewModelAdapter.getSpecification();
+        super.getServiceInjector().injectServicesInto(viewModelPojo);
+        
         val propertiesStream = spec.streamProperties(Contributed.EXCLUDED)
                 .filter(property->mementoKeys.contains(property.getId()));
 
@@ -76,7 +76,7 @@ extends RecreatableObjectFacetAbstract {
             val propertyValue = memento.get(propertyId, propertyType);
 
             if(propertyValue != null) {
-                property.set(viewModelAdapter, getObjectAdapterProvider().adapterFor(propertyValue), InteractionInitiatedBy.FRAMEWORK);
+                property.set(viewModelAdapter, objectManager.adapt(propertyValue), InteractionInitiatedBy.FRAMEWORK);
             }
         });
 
@@ -87,18 +87,17 @@ extends RecreatableObjectFacetAbstract {
 
         final _Mementos.Memento memento = newMemento();
 
-        final ManagedObject ownerAdapter = 
-                /*
-                 * ObjectAdapter that holds the ObjectSpecification used for 
-                 * interrogating the domain object's metadata. 
-                 * 
-                 * Does _not_ perform dependency injection on the domain object. Also bypasses 
-                 * caching (if any), that is each call to this method creates a new unique instance.
-                 */
-                ManagedObject.of(getSpecificationLoader().loadSpecification(viewModelPojo.getClass()), viewModelPojo);
-
-
-        final ObjectSpecification spec = ownerAdapter.getSpecification();
+        val objectManager = super.getObjectManager();
+        val spec = objectManager.loadSpec(viewModelPojo);
+        
+        /*
+         * ManagedObject that holds the ObjectSpecification used for 
+         * interrogating the domain object's metadata. 
+         * 
+         * Does _not_ perform dependency injection on the domain object. Also bypasses 
+         * caching (if any), that is each call to this method creates a new instance.
+         */
+        val ownerAdapter = ManagedObject.of(spec, viewModelPojo);
 
         final Stream<OneToOneAssociation> properties = spec.streamProperties(Contributed.EXCLUDED);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 2c27489..5b5ff5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -122,8 +122,8 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
 
     @Override
     public String title(ManagedObject contextAdapter, ManagedObject targetAdapter) {
-        final StringBuilder stringBuilder = new StringBuilder();
-        final ObjectAdapterProvider adapterProvider = getObjectAdapterProvider();
+        val stringBuilder = new StringBuilder();
+        val objectManager = getObjectManager();
 
         try {
             for (final TitleComponent component : this.components) {
@@ -132,7 +132,7 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
                     continue;
                 }
                 // ignore context, if provided
-                final ObjectAdapter titlePartAdapter = adapterProvider.adapterFor(titlePart);
+                val titlePartAdapter = objectManager.adapt(titlePart);
                 if(Objects.equals(contextAdapter, titlePartAdapter)) {
                     continue;
                 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index c695bd3..5ad6233 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -32,16 +32,18 @@ import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.commons.exceptions.UnknownTypeException;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.commons.LocaleUtil;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
-public abstract class ValueSemanticsProviderAndFacetAbstract<T> extends FacetAbstract implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProvider<T> {
+public abstract class ValueSemanticsProviderAndFacetAbstract<T> 
+extends FacetAbstract 
+implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProvider<T> {
 
     private final Class<T> adaptedClass;
     private final int typicalLength;
@@ -300,10 +302,10 @@ public abstract class ValueSemanticsProviderAndFacetAbstract<T> extends FacetAbs
     // Helper: createAdapter
     // //////////////////////////////////////////////////////////
 
-    protected ObjectAdapter createAdapter(final Class<?> type, final Object object) {
+    protected ManagedObject createAdapter(final Class<?> type, final Object object) {
         final ObjectSpecification specification = getSpecificationLoader().loadSpecification(type);
         if (specification.isNotCollection()) {
-            return getObjectAdapterProvider().adapterFor(object);
+            return getObjectManager().adapt(object);
         } else {
             throw new UnknownTypeException("not an object, is this a collection?");
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 86066cc..6396d95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -84,7 +84,7 @@ extends ActionParameterAutoCompleteFacetAbstract implements ImperativeFacet {
         if (collectionOrArray == null) {
             return _Constants.emptyObjects;
         }
-        final ManagedObject collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        final ManagedObject collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
         final Class<?> parameterType = facetedMethodParameter.getType();
@@ -97,7 +97,7 @@ extends ActionParameterAutoCompleteFacetAbstract implements ImperativeFacet {
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index 9f3c518..95ac7ed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -96,7 +96,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
             return null;
         }
 
-        final ManagedObject collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        final ManagedObject collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final List<ManagedObject> visibleAdapters =
                 ObjectAdapter.Util.visibleAdapters(
@@ -106,7 +106,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, parameterSpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, parameterSpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 33bdd42..3c27d83 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -76,7 +76,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
         if (choices == null) {
             return _Constants.emptyObjects;
         }
-        final ManagedObject objectAdapter = getObjectAdapterProvider().adapterFor(choices);
+        final ManagedObject objectAdapter = getObjectManager().adapt(choices);
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
         final Class<?> parameterType = facetedMethodParameter.getType();
 
@@ -88,7 +88,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 667fd19..c705b4b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -74,7 +74,7 @@ implements ImperativeFacet {
 
         boolean filterForVisibility = super.getMetaModelContext().getConfiguration().getReflector().getFacet().isFilterVisibility();
         if(filterForVisibility) {
-            final ObjectAdapter referencedAdapter = getObjectAdapterProvider().adapterFor(referencedObject);
+            final ManagedObject referencedAdapter = getObjectManager().adapt(referencedObject);
             final boolean visible = ManagedObject.Visibility
                     .isVisible(referencedAdapter, interactionInitiatedBy);
             if (!visible) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index a3fc20a..8632d00 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -36,6 +36,8 @@ import org.apache.isis.metamodel.facets.properties.autocomplete.PropertyAutoComp
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
+import lombok.val;
+
 public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAbstract implements ImperativeFacet {
 
     private final Method method;
@@ -82,7 +84,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
             return null;
         }
 
-        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
+        val collectionAdapter = getObjectManager().adapt(collectionOrArray);
 
         final FacetedMethod facetedMethod = (FacetedMethod) getFacetHolder();
         final Class<?> propertyType = facetedMethod.getType();
@@ -95,7 +97,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
                 _Lists.map(visibleAdapters, ManagedObject::unwrapPojo);
 
         final ObjectSpecification propertySpec = getSpecification(propertyType);
-        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
index 2e67ed8..5dd1047 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
@@ -76,7 +76,7 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
             return ObjectExtensions.asArray(options);
         }
         final ObjectSpecification specification = getSpecificationLoader().loadSpecification(choicesClass);
-        return CollectionUtils.getCollectionAsObjectArray(options, specification, getObjectAdapterProvider());
+        return CollectionUtils.getCollectionAsObjectArray(options, specification, getObjectManager());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
index ec1b108..0f0938c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
@@ -47,7 +47,7 @@ public class PropertyDefaultFacetDerivedFromDefaultedFacet extends FacetAbstract
         if (typeFacetDefault == null) {
             return null;
         }
-        return getObjectAdapterProvider().adapterFor(typeFacetDefault);
+        return getObjectManager().adapt(typeFacetDefault);
     }
 
     @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
index 4fd00d5..1900981 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
@@ -70,7 +70,7 @@ public class PropertyDefaultFacetViaMethod extends PropertyDefaultFacetAbstract
     private ManagedObject createAdapter(final Class<?> type, final Object object) {
         val specification = getSpecificationLoader().loadSpecification(type);
         if (specification.isNotCollection()) {
-            return getObjectAdapterProvider().adapterFor(object);
+            return getObjectManager().adapt(object);
         } else {
             throw new UnknownTypeException("not an object, is this a collection?");
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index 6de808a..d4ba883 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -30,8 +30,8 @@ import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 
-
-public abstract class DateAndTimeValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
+public abstract class DateAndTimeValueSemanticsProviderAbstract<T> 
+extends ValueSemanticsProviderAbstractTemporal<T> {
 
     private static Map<String, DateFormat> formats = _Maps.newHashMap();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index 6fac59a..14a780f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -34,14 +34,16 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.value.date.DateValueFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class ValueSemanticsProviderAbstractTemporal<T> extends ValueSemanticsProviderAndFacetAbstract<T> implements DateValueFacet {
+public abstract class ValueSemanticsProviderAbstractTemporal<T> 
+extends ValueSemanticsProviderAndFacetAbstract<T> 
+implements DateValueFacet {
 
     /**
      * Introduced to allow BDD tests to provide a different format string
@@ -320,13 +322,13 @@ public abstract class ValueSemanticsProviderAbstractTemporal<T> extends ValueSem
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final Date dateValue(final ObjectAdapter object) {
+    public final Date dateValue(final ManagedObject object) {
         return object == null ? null : dateValue(object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final Date date) {
-        return getObjectAdapterProvider().adapterFor(setDate(date));
+    public final ManagedObject createValue(final Date date) {
+        return getObjectManager().adapt(setDate(date));
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
index 706bc68..ff6ae62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.value.booleans;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -48,7 +47,7 @@ public class BooleanPrimitiveValueSemanticsProvider extends BooleanValueSemantic
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public ObjectAdapter getDefault(final ManagedObject inObject) {
+    public ManagedObject getDefault(final ManagedObject inObject) {
         return createAdapter(boolean.class, Boolean.FALSE);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java
index 16d69d6..7f1eedb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/booleans/BooleanValueFacet.java
@@ -26,9 +26,4 @@ public interface BooleanValueFacet extends Facet {
 
     boolean isSet(ManagedObject object);
 
-    //    void set(ObjectAdapter object);
-    //
-    //    void reset(ObjectAdapter object);
-    //
-    //    void toggle(ObjectAdapter object);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java
index 640e58c..e543a8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.bytes;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface ByteValueFacet extends Facet {
-    Byte byteValue(ObjectAdapter object);
+    
+    Byte byteValue(ManagedObject object);
 
-    ObjectAdapter createValue(Byte value);
+    ManagedObject createValue(Byte value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
index a0d71cd..9f257ec 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
@@ -25,13 +25,15 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
-public abstract class ByteValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Byte> implements ByteValueFacet {
+public abstract class ByteValueSemanticsProviderAbstract 
+extends ValueSemanticsProviderAndFacetAbstract<Byte> 
+implements ByteValueFacet {
 
     private static Class<? extends Facet> type() {
         return ByteValueFacet.class;
@@ -90,13 +92,13 @@ public abstract class ByteValueSemanticsProviderAbstract extends ValueSemanticsP
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Byte byteValue(final ObjectAdapter object) {
+    public Byte byteValue(final ManagedObject object) {
         return (Byte) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final Byte value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Byte value) {
+        return getObjectManager().adapt(value);
     }
 
     // ///// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java
index 00bfe5d..66ea3a5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharPrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class CharPrimitiveValueSemanticsProvider extends CharValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class CharPrimitiveValueSemanticsProvider
+extends CharValueSemanticsProviderAbstract 
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java
index 0812cce..d815beb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.chars;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface CharValueFacet extends Facet {
-    Character charValue(ObjectAdapter object);
+    
+    Character charValue(ManagedObject object);
 
-    ObjectAdapter createValue(Character value);
+    ManagedObject createValue(Character value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
index 6edc620..f8d475e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
@@ -21,11 +21,11 @@ package org.apache.isis.metamodel.facets.value.chars;
 
 import java.text.DecimalFormat;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public abstract class CharValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Character> implements CharValueFacet {
@@ -84,13 +84,13 @@ public abstract class CharValueSemanticsProviderAbstract extends ValueSemanticsP
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Character charValue(final ObjectAdapter object) {
+    public Character charValue(final ManagedObject object) {
         return object == null ? null : (Character) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final Character value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Character value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
index 2600da4..825f0d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.color;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface ColorValueFacet extends Facet {
-    int colorValue(ObjectAdapter object);
+    
+    int colorValue(ManagedObject object);
 
-    ObjectAdapter createValue(ObjectAdapter object, int color);
+    ManagedObject createValue(ManagedObject object, int color);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java
index 4303c7b..1e6972a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueSemanticsProvider.java
@@ -24,14 +24,16 @@ import java.text.DecimalFormat;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Color;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class ColorValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Color> implements ColorValueFacet {
+public class ColorValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<Color> 
+implements ColorValueFacet {
 
     public static Class<? extends Facet> type() {
         return ColorValueFacet.class;
@@ -103,7 +105,7 @@ public class ColorValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public int colorValue(final ObjectAdapter object) {
+    public int colorValue(final ManagedObject object) {
         if (object == null) {
             return 0;
         }
@@ -112,9 +114,9 @@ public class ColorValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     }
 
     @Override
-    public ObjectAdapter createValue(final ObjectAdapter object, final int colorAsInt) {
+    public ManagedObject createValue(final ManagedObject object, final int colorAsInt) {
         final Color color = new Color(colorAsInt);
-        return getObjectAdapterProvider().adapterFor(color);
+        return getObjectManager().adapt(color);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java
index a396a4a..ca9f83c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/date/DateValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.date;
 
 import java.util.Date;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface DateValueFacet extends Facet {
 
-    Date dateValue(ObjectAdapter object);
+    Date dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(Date date);
+    ManagedObject createValue(Date date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java
index 280f692..8233e95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datejdk8local;
 
 import java.time.LocalDate;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface Jdk8LocalDateValueFacet extends Facet {
 
-    LocalDate dateValue(ObjectAdapter object);
+    LocalDate dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDate date);
+    ManagedObject createValue(LocalDate date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
index 6daf1ea..48b3dfb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
@@ -29,18 +29,20 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.value.datejodalocal.JodaLocalDateValueFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.formatterOf;
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.formatterOfStyle;
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.parserOf;
 import static org.apache.isis.metamodel.facets.value.datejdk8local.Jdk8LocalDateUtil.parserOfStyle;
 
-public class Jdk8LocalDateValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<LocalDate> implements Jdk8LocalDateValueFacet {
+public class Jdk8LocalDateValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<LocalDate>
+implements Jdk8LocalDateValueFacet {
 
     public static final int MAX_LENGTH = 12;
     public static final int TYPICAL_LENGTH = MAX_LENGTH;
@@ -235,13 +237,13 @@ public class Jdk8LocalDateValueSemanticsProvider extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDate dateValue(final ObjectAdapter object) {
+    public final LocalDate dateValue(final ManagedObject object) {
         return (LocalDate) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDate date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDate date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java
index 2573dc7..b36f95b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datejodalocal;
 
 import org.joda.time.LocalDate;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface JodaLocalDateValueFacet extends Facet {
 
-    LocalDate dateValue(ObjectAdapter object);
+    LocalDate dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDate date);
+    ManagedObject createValue(LocalDate date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
index 14bc421..d46833a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
@@ -33,10 +33,10 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<LocalDate> implements JodaLocalDateValueFacet {
@@ -237,13 +237,13 @@ public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDate dateValue(final ObjectAdapter object) {
+    public final LocalDate dateValue(final ManagedObject object) {
         return (LocalDate) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDate date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDate date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java
index 83decf2..f7b2216 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datetimejdk8local;
 
 import java.time.LocalDateTime;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface Jdk8LocalDateTimeValueFacet extends Facet {
 
-    LocalDateTime dateValue(ObjectAdapter object);
+    LocalDateTime dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDateTime date);
+    ManagedObject createValue(LocalDateTime date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
index e6f8d2a..d24a7d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
@@ -32,10 +32,10 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 import static org.apache.isis.metamodel.facets.value.datetimejdk8local.Jdk8LocalDateTimeUtil.formatterOf;
 import static org.apache.isis.metamodel.facets.value.datetimejdk8local.Jdk8LocalDateTimeUtil.parserOf;
@@ -255,13 +255,13 @@ public class Jdk8LocalDateTimeValueSemanticsProvider extends ValueSemanticsProvi
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDateTime dateValue(final ObjectAdapter object) {
+    public final LocalDateTime dateValue(final ManagedObject object) {
         return (LocalDateTime) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDateTime date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDateTime date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java
index 3e8db54..695e197 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueFacet.java
@@ -21,13 +21,13 @@ package org.apache.isis.metamodel.facets.value.datetimejodalocal;
 
 import org.joda.time.LocalDateTime;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface JodaLocalDateTimeValueFacet extends Facet {
 
-    LocalDateTime dateValue(ObjectAdapter object);
+    LocalDateTime dateValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalDateTime date);
+    ManagedObject createValue(LocalDateTime date);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
index df45563..e1d4202 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
@@ -34,13 +34,15 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class JodaLocalDateTimeValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<LocalDateTime> implements JodaLocalDateTimeValueFacet {
+public class JodaLocalDateTimeValueSemanticsProvider 
+extends ValueSemanticsProviderAndFacetAbstract<LocalDateTime> 
+implements JodaLocalDateTimeValueFacet {
 
     public static final int MAX_LENGTH = 36;
     public static final int TYPICAL_LENGTH = 22;
@@ -237,13 +239,13 @@ public class JodaLocalDateTimeValueSemanticsProvider extends ValueSemanticsProvi
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public final LocalDateTime dateValue(final ObjectAdapter object) {
+    public final LocalDateTime dateValue(final ManagedObject object) {
         return (LocalDateTime) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public final ObjectAdapter createValue(final LocalDateTime date) {
-        return getObjectAdapterProvider().adapterFor(date);
+    public final ManagedObject createValue(final LocalDateTime date) {
+        return getObjectManager().adapt(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java
index 717e7a6..e9b898d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleFloatingPointValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.doubles;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface DoubleFloatingPointValueFacet extends Facet {
-    Double doubleValue(ObjectAdapter object);
+    
+    Double doubleValue(ManagedObject object);
 
-    ObjectAdapter createValue(Double value);
+    ManagedObject createValue(Double value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java
index a044cde..e012cdb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoublePrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class DoublePrimitiveValueSemanticsProvider extends DoubleValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class DoublePrimitiveValueSemanticsProvider
+extends DoubleValueSemanticsProviderAbstract
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
index e7e3620..c809144 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
@@ -25,14 +25,16 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public abstract class DoubleValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Double> implements DoubleFloatingPointValueFacet {
+public abstract class DoubleValueSemanticsProviderAbstract 
+extends ValueSemanticsProviderAndFacetAbstract<Double> 
+implements DoubleFloatingPointValueFacet {
 
     private static Class<? extends Facet> type() {
         return DoubleFloatingPointValueFacet.class;
@@ -95,13 +97,13 @@ public abstract class DoubleValueSemanticsProviderAbstract extends ValueSemantic
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Double doubleValue(final ObjectAdapter object) {
+    public Double doubleValue(final ManagedObject object) {
         return (Double) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public ObjectAdapter createValue(final Double value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Double value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java
index 7e433d4..8b10f92 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/doubles/DoubleWrapperValueSemanticsProvider.java
@@ -24,7 +24,8 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 
 
-public class DoubleWrapperValueSemanticsProvider extends DoubleValueSemanticsProviderAbstract {
+public class DoubleWrapperValueSemanticsProvider 
+extends DoubleValueSemanticsProviderAbstract {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java
index bc5f05f..32bd200 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatPrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class FloatPrimitiveValueSemanticsProvider extends FloatValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class FloatPrimitiveValueSemanticsProvider
+extends FloatValueSemanticsProviderAbstract
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
index 2bf6349..e06229a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
@@ -25,14 +25,16 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class FloatValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Float> implements FloatingPointValueFacet {
+public class FloatValueSemanticsProviderAbstract
+extends ValueSemanticsProviderAndFacetAbstract<Float>
+implements FloatingPointValueFacet {
 
     public static Class<? extends Facet> type() {
         return FloatingPointValueFacet.class;
@@ -91,13 +93,13 @@ public class FloatValueSemanticsProviderAbstract extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Float floatValue(final ObjectAdapter object) {
+    public Float floatValue(final ManagedObject object) {
         return object == null ? null : (Float) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final Float value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Float value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java
index 6f3c2b0..e0cc89e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/floats/FloatingPointValueFacet.java
@@ -19,12 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.floats;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface FloatingPointValueFacet extends Facet {
 
-    Float floatValue(ObjectAdapter object);
+    Float floatValue(ManagedObject object);
 
-    ObjectAdapter createValue(Float value);
+    ManagedObject createValue(Float value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java
index c954346..7e68a4a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/image/ImageValueSemanticsProvider.java
@@ -94,7 +94,7 @@ public class ImageValueSemanticsProvider extends ImageValueSemanticsProviderAbst
 
     @Override
     public ManagedObject createValue(final java.awt.Image image) {
-        return getObjectAdapterProvider().adapterFor(new Image(grabPixels(image)));
+        return getObjectManager().adapt(new Image(grabPixels(image)));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
index 4724cef..120585a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
@@ -25,7 +25,8 @@ import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.value.image.ImageValueSemanticsProviderAbstract;
 import org.apache.isis.metamodel.spec.ManagedObject;
 
-public class JavaAwtImageValueSemanticsProvider extends ImageValueSemanticsProviderAbstract<Image> {
+public class JavaAwtImageValueSemanticsProvider 
+extends ImageValueSemanticsProviderAbstract<Image> {
 
     public JavaAwtImageValueSemanticsProvider(final FacetHolder holder) {
         super(holder, Image.class);
@@ -76,7 +77,7 @@ public class JavaAwtImageValueSemanticsProvider extends ImageValueSemanticsProvi
 
     @Override
     public ManagedObject createValue(final Image image) {
-        return getObjectAdapterProvider().adapterFor(image);
+        return getObjectManager().adapt(image);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java
index b0a3932..fade969 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntPrimitiveValueSemanticsProvider.java
@@ -26,7 +26,9 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
 import org.apache.isis.metamodel.spec.ManagedObject;
 
 
-public class IntPrimitiveValueSemanticsProvider extends IntValueSemanticsProviderAbstract implements PropertyDefaultFacet {
+public class IntPrimitiveValueSemanticsProvider
+extends IntValueSemanticsProviderAbstract
+implements PropertyDefaultFacet {
 
     /**
      * Required because implementation of {@link Parser} and
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
index 7cb1765..108c282 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
@@ -25,11 +25,11 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Integer> implements IntegerValueFacet {
@@ -91,13 +91,13 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Integer integerValue(final ObjectAdapter object) {
+    public Integer integerValue(final ManagedObject object) {
         return (Integer) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public ObjectAdapter createValue(final Integer value) {
-        return value == null ? null : getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Integer value) {
+        return value == null ? null : getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java
index 80a8c02..f6c18a9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/integer/IntegerValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.integer;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface IntegerValueFacet extends Facet {
-    Integer integerValue(ObjectAdapter object);
+    
+    Integer integerValue(ManagedObject object);
 
-    ObjectAdapter createValue(Integer value);
+    ManagedObject createValue(Integer value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java
index 85682f5..e827fd0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueFacet.java
@@ -20,12 +20,13 @@
 package org.apache.isis.metamodel.facets.value.localrespath;
 
 import org.apache.isis.applib.value.LocalResourcePath;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface LocalResourcePathValueFacet extends Facet {
-    LocalResourcePath localResourcePathValue(ObjectAdapter object);
+    
+    LocalResourcePath localResourcePathValue(ManagedObject object);
 
-    ObjectAdapter createValue(LocalResourcePath value);
+    ManagedObject createValue(LocalResourcePath value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
index 0942670..dce612a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
@@ -24,10 +24,10 @@ import java.nio.file.InvalidPathException;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.LocalResourcePath;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class LocalResourcePathValueSemanticsProvider
 extends ValueSemanticsProviderAndFacetAbstract<LocalResourcePath> implements LocalResourcePathValueFacet {
@@ -111,13 +111,13 @@ extends ValueSemanticsProviderAndFacetAbstract<LocalResourcePath> implements Loc
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public LocalResourcePath localResourcePathValue(final ObjectAdapter object) {
+    public LocalResourcePath localResourcePathValue(final ManagedObject object) {
         return object == null ? null : (LocalResourcePath) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final LocalResourcePath value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final LocalResourcePath value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java
index c6f4146..f03b5b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.longs;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface LongValueFacet extends Facet {
-    Long longValue(ObjectAdapter object);
+    
+    Long longValue(ManagedObject object);
 
-    ObjectAdapter createValue(Long value);
+    ManagedObject createValue(Long value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
index 4c6480a..2bed55d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
@@ -25,11 +25,11 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public abstract class LongValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Long> implements LongValueFacet {
@@ -91,13 +91,13 @@ public abstract class LongValueSemanticsProviderAbstract extends ValueSemanticsP
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Long longValue(final ObjectAdapter object) {
+    public Long longValue(final ManagedObject object) {
         return (Long) (object == null ? null : object.getPojo());
     }
 
     @Override
-    public ObjectAdapter createValue(final Long value) {
-        return value == null ? null : getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Long value) {
+        return value == null ? null : getObjectManager().adapt(value);
     }
 
     // // ///// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java
index 6998b37..e046970 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.markup;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface MarkupValueFacet extends Facet {
-    String markupValue(ObjectAdapter object);
-    ObjectAdapter createValue(ObjectAdapter object, String html);
+    
+    String markupValue(ManagedObject object);
+    ManagedObject createValue(ManagedObject object, String html);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
index 197698e..bf80165 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
@@ -22,12 +22,14 @@ package org.apache.isis.metamodel.facets.value.markup;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Markup;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
-public class MarkupValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Markup> implements MarkupValueFacet {
+public class MarkupValueSemanticsProvider 
+extends ValueSemanticsProviderAndFacetAbstract<Markup> 
+implements MarkupValueFacet {
 
     private static final int TYPICAL_LENGTH = 0;
 
@@ -73,7 +75,7 @@ public class MarkupValueSemanticsProvider extends ValueSemanticsProviderAndFacet
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public String markupValue(final ObjectAdapter object) {
+    public String markupValue(final ManagedObject object) {
         if (object == null) {
             return "";
         }
@@ -82,9 +84,9 @@ public class MarkupValueSemanticsProvider extends ValueSemanticsProviderAndFacet
     }
 
     @Override
-    public ObjectAdapter createValue(final ObjectAdapter object, final String html) {
+    public ManagedObject createValue(final ManagedObject object, final String html) {
         final Markup markup = new Markup(html);
-        return getObjectAdapterProvider().adapterFor(markup);
+        return getObjectManager().adapt(markup);
     }
 
     // //////////////////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java
index d983043..b4dea41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueFacet.java
@@ -19,15 +19,15 @@
 
 package org.apache.isis.metamodel.facets.value.money;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface MoneyValueFacet extends Facet {
 
-    float getAmount(ObjectAdapter object);
+    float getAmount(ManagedObject object);
 
-    String getCurrencyCode(ObjectAdapter object);
+    String getCurrencyCode(ManagedObject object);
 
-    ObjectAdapter createValue(float amount, String currencyCode);
+    ManagedObject createValue(float amount, String currencyCode);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
index 5d23be2..ea51750 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
@@ -28,12 +28,12 @@ import java.util.Map;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Money;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Money> implements MoneyValueFacet {
 
@@ -190,7 +190,7 @@ public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public float getAmount(final ObjectAdapter object) {
+    public float getAmount(final ManagedObject object) {
         final Money money = (Money) object.getPojo();
         if (money == null) {
             return 0.0f;
@@ -200,7 +200,7 @@ public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     }
 
     @Override
-    public String getCurrencyCode(final ObjectAdapter object) {
+    public String getCurrencyCode(final ManagedObject object) {
         final Money money = (Money) object.getPojo();
         if (money == null) {
             return "";
@@ -210,8 +210,8 @@ public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     }
 
     @Override
-    public ObjectAdapter createValue(final float amount, final String currencyCode) {
-        return getObjectAdapterProvider().adapterFor(new Money(amount, currencyCode));
+    public ManagedObject createValue(final float amount, final String currencyCode) {
+        return getObjectManager().adapt(new Money(amount, currencyCode));
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java
index b6ca1df..229f29f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueFacet.java
@@ -19,15 +19,15 @@
 
 package org.apache.isis.metamodel.facets.value.password;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface PasswordValueFacet extends Facet {
 
-    boolean checkPassword(ObjectAdapter object, String password);
+    boolean checkPassword(ManagedObject object, String password);
 
-    String getEditText(ObjectAdapter object);
+    String getEditText(ManagedObject object);
 
-    ObjectAdapter createValue(String value);
+    ManagedObject createValue(String value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
index 982840b..bef8682 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
@@ -22,10 +22,10 @@ package org.apache.isis.metamodel.facets.value.password;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Password;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class PasswordValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Password> implements
@@ -87,23 +87,23 @@ PasswordValueFacet {
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public boolean checkPassword(final ObjectAdapter object, final String password) {
+    public boolean checkPassword(final ManagedObject object, final String password) {
         return password(object.getPojo()).checkPassword(password);
     }
 
     @Override
-    public String getEditText(final ObjectAdapter object) {
+    public String getEditText(final ManagedObject object) {
         return object == null ? "" : password(object).getPassword();
     }
 
     @Override
-    public ObjectAdapter createValue(final String password) {
-        return getObjectAdapterProvider().adapterFor(new Password(password));
+    public ManagedObject createValue(final String password) {
+        return getObjectManager().adapt(new Password(password));
     }
 
     private Password password(final Object object) {
-        if (object instanceof ObjectAdapter) {
-            return (Password) ((ObjectAdapter) object).getPojo();
+        if (object instanceof ManagedObject) {
+            return (Password) ((ManagedObject) object).getPojo();
         } else {
             return (Password) object;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
index cd399c0..cdb42af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
@@ -27,12 +27,12 @@ import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.value.Percentage;
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
 import org.apache.isis.metamodel.facets.value.floats.FloatingPointValueFacet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class PercentageValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Percentage> implements FloatingPointValueFacet {
 
@@ -124,21 +124,21 @@ public class PercentageValueSemanticsProvider extends ValueSemanticsProviderAndF
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public Float floatValue(final ObjectAdapter object) {
+    public Float floatValue(final ManagedObject object) {
         final Percentage per = (Percentage) object.getPojo();
         return new Float(per.floatValue());
     }
 
     @Override
-    public ObjectAdapter createValue(final Float value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Float value) {
+        return getObjectManager().adapt(value);
     }
 
     // //////////////////////////////////////////////////////////////////
     // PropertyDefaultFacet
     // //////////////////////////////////////////////////////////////////
 
-    public Object getDefault(final ObjectAdapter inObject) {
+    public Object getDefault(final ManagedObject inObject) {
         return Float.valueOf(0.0f);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java
index b531863..ceaa1e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueFacet.java
@@ -19,11 +19,12 @@
 
 package org.apache.isis.metamodel.facets.value.shortint;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface ShortValueFacet extends Facet {
-    Short shortValue(ObjectAdapter object);
+    
+    Short shortValue(ManagedObject object);
 
-    ObjectAdapter createValue(Short value);
+    ManagedObject createValue(Short value);
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
index 5c0a955..e192b54 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
@@ -25,11 +25,11 @@ import java.text.ParseException;
 import java.util.Map;
 
 import org.apache.isis.config.IsisConfiguration.Value.FormatIdentifier;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.TextEntryParseException;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class ShortValueSemanticsProviderAbstract extends ValueSemanticsProviderAndFacetAbstract<Short> implements ShortValueFacet {
@@ -91,12 +91,12 @@ public class ShortValueSemanticsProviderAbstract extends ValueSemanticsProviderA
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public ObjectAdapter createValue(final Short value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final Short value) {
+        return getObjectManager().adapt(value);
     }
 
     @Override
-    public Short shortValue(final ObjectAdapter object) {
+    public Short shortValue(final ManagedObject object) {
         return (Short) (object == null ? null : object.getPojo());
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java
index 64b4ea1..9efc7a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueFacet.java
@@ -19,12 +19,13 @@
 
 package org.apache.isis.metamodel.facets.value.string;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface StringValueFacet extends Facet {
-    String stringValue(ObjectAdapter object);
+    
+    String stringValue(ManagedObject object);
 
-    ObjectAdapter createValue(String value);
+    ManagedObject createValue(String value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java
index a4b20f1..f9453ac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/string/StringValueSemanticsProvider.java
@@ -21,10 +21,10 @@ package org.apache.isis.metamodel.facets.value.string;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class StringValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<String> implements StringValueFacet {
 
@@ -107,13 +107,13 @@ public class StringValueSemanticsProvider extends ValueSemanticsProviderAndFacet
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public String stringValue(final ObjectAdapter object) {
+    public String stringValue(final ManagedObject object) {
         return object == null ? "" : (String) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final String value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final String value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java
index 3c30fb2..918f7f4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueFacet.java
@@ -19,12 +19,13 @@
 
 package org.apache.isis.metamodel.facets.value.url;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface URLValueFacet extends Facet {
-    java.net.URL urlValue(ObjectAdapter object);
+    
+    java.net.URL urlValue(ManagedObject object);
 
-    ObjectAdapter createValue(java.net.URL value);
+    ManagedObject createValue(java.net.URL value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java
index f9a7943..20369df 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/url/URLValueSemanticsProvider.java
@@ -23,10 +23,10 @@ import java.net.MalformedURLException;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public class URLValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<java.net.URL> implements URLValueFacet {
 
@@ -108,13 +108,13 @@ public class URLValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbs
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public java.net.URL urlValue(final ObjectAdapter object) {
+    public java.net.URL urlValue(final ManagedObject object) {
         return object == null ? null : (java.net.URL) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final java.net.URL value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final java.net.URL value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java
index 5d3c242..abd250d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueFacet.java
@@ -21,12 +21,13 @@ package org.apache.isis.metamodel.facets.value.uuid;
 
 import java.util.UUID;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 public interface UUIDValueFacet extends Facet {
-    UUID uuidValue(ObjectAdapter object);
+    
+    UUID uuidValue(ManagedObject object);
 
-    ObjectAdapter createValue(UUID value);
+    ManagedObject createValue(UUID value);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
index a63577f..34dd31d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
@@ -23,10 +23,10 @@ import java.util.UUID;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.metamodel.spec.ManagedObject;
 
 
 public class UUIDValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<UUID> implements UUIDValueFacet {
@@ -93,13 +93,13 @@ public class UUIDValueSemanticsProvider extends ValueSemanticsProviderAndFacetAb
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    public UUID uuidValue(final ObjectAdapter object) {
+    public UUID uuidValue(final ManagedObject object) {
         return object == null ? null : (UUID) object.getPojo();
     }
 
     @Override
-    public ObjectAdapter createValue(final UUID value) {
-        return getObjectAdapterProvider().adapterFor(value);
+    public ManagedObject createValue(final UUID value) {
+        return getObjectManager().adapt(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader.java
similarity index 95%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader.java
rename to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader.java
index 0cf87b7..d582e1c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader.java
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.metamodel.adapter.loader;
+package org.apache.isis.metamodel.objectmanager;
 
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContextAware;
@@ -57,7 +57,7 @@ public interface ObjectLoader {
     }
 
     public static ObjectLoaderBuilder builder(MetaModelContext metaModelContext) {
-        return new ObjectLoader_Builder(metaModelContext);
+        return new ObjectLoader_builder(metaModelContext);
     }
 
     public static ObjectLoader buildDefault(MetaModelContext metaModelContext) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_Builder.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builder.java
similarity index 87%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_Builder.java
rename to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builder.java
index 8ac93a5..44a6cda 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_Builder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builder.java
@@ -17,27 +17,27 @@
  *  under the License.
  */
 
-package org.apache.isis.metamodel.adapter.loader;
+package org.apache.isis.metamodel.objectmanager;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader.ObjectLoaderBuilder;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.ObjectLoaderBuilder;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 @RequiredArgsConstructor
-class ObjectLoader_Builder implements ObjectLoaderBuilder {
+class ObjectLoader_builder implements ObjectLoaderBuilder {
     
     private final MetaModelContext metaModelContext;
 
     private final List<ObjectLoader.Handler> handlers = new ArrayList<>();
 
     @Override
-    public ObjectLoader_Builder add(ObjectLoader.Handler handler) {
+    public ObjectLoader_builder add(ObjectLoader.Handler handler) {
         handler.setMetaModelContext(metaModelContext);
         handlers.add(handler);
         return this;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_builtinHandlers.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builtinHandlers.java
similarity index 97%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_builtinHandlers.java
rename to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builtinHandlers.java
index 76c9f0f..c581165 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/loader/ObjectLoader_builtinHandlers.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectLoader_builtinHandlers.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.metamodel.adapter.loader;
+package org.apache.isis.metamodel.objectmanager;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Modifier;
@@ -25,10 +25,10 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader.Handler;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader.ObjectLoadRequest;
 import org.apache.isis.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.Handler;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.ObjectLoadRequest;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager.java
new file mode 100644
index 0000000..6da6947
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager.java
@@ -0,0 +1,62 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.metamodel.objectmanager;
+
+import org.apache.isis.metamodel.MetaModelContext;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader.ObjectLoadRequest;
+import org.apache.isis.metamodel.spec.ManagedObject;
+import org.apache.isis.metamodel.spec.ObjectSpecification;
+
+import lombok.val;
+
+/**
+ * 
+ * @since 2.0
+ *
+ */
+public interface ObjectManager {
+
+    MetaModelContext getMetaModelContext();
+    ObjectLoader getObjectLoader();
+
+    public static ObjectManager of(MetaModelContext metaModelContext) {
+        val objectLoader = ObjectLoader.buildDefault(metaModelContext);
+        val objectManager = new ObjectManager_default(metaModelContext, objectLoader);
+        return objectManager;
+    }
+
+    public default ManagedObject loadObject(ObjectLoadRequest objectLoadRequest) {
+        return getObjectLoader().loadObject(objectLoadRequest);
+    }
+    
+    public default ManagedObject adapt(Object pojo) {
+        if(pojo==null) {
+            return null; // don't propagate null into ManagedObject, null has no type 
+        }
+        return ManagedObject.of(getMetaModelContext().getSpecificationLoader()::loadSpecification, pojo);
+    }
+
+    public default ObjectSpecification loadSpec(Object pojo) {
+        if(pojo==null) {
+            return null; 
+        }
+        return getMetaModelContext().getSpecificationLoader().loadSpecification(pojo.getClass());
+    }
+    
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager_default.java
similarity index 63%
copy from core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
copy to core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager_default.java
index 2600da4..6c8b68f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/value/color/ColorValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManager_default.java
@@ -16,14 +16,18 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+package org.apache.isis.metamodel.objectmanager;
 
-package org.apache.isis.metamodel.facets.value.color;
+import org.apache.isis.metamodel.MetaModelContext;
 
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.facetapi.Facet;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 
-public interface ColorValueFacet extends Facet {
-    int colorValue(ObjectAdapter object);
+@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
+class ObjectManager_default implements ObjectManager {
 
-    ObjectAdapter createValue(ObjectAdapter object, int color);
+    @Getter(onMethod = @__(@Override)) private final MetaModelContext metaModelContext;
+    @Getter(onMethod = @__(@Override)) private final ObjectLoader objectLoader;
+    
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
index 5881907..4f6dc13 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.spec;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -31,18 +32,17 @@ import org.apache.isis.applib.domain.DomainObjectList;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.adapter.oid.factory.OidFactory;
 import org.apache.isis.metamodel.adapter.version.Version;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.metamodel.consent.InteractionResult;
 import org.apache.isis.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.metamodel.facets.object.entity.EntityFacet;
 import org.apache.isis.metamodel.interactions.InteractionUtils;
 import org.apache.isis.metamodel.interactions.ObjectVisibilityContext;
 import org.apache.isis.metamodel.interactions.VisibilityContext;
+import org.apache.isis.metamodel.objectmanager.ObjectLoader;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.SpecificationLoaderDefault;
 
@@ -306,18 +306,19 @@ public interface ManagedObject {
     // -- DEPRECATIONS (in an attempt to decouple the metamodel from ObjectAdapter)
     
     @Deprecated
-    public static ObjectAdapter promote(ManagedObject managedObject) {
-        if(managedObject==null) {
-            return null;
-        }
-        return (ObjectAdapter) managedObject;
+    public static Optional<ObjectAdapter> promote(ManagedObject managedObject) {
+        return Optional.ofNullable(managedObject)
+        .filter(mo->mo instanceof ObjectAdapter) 
+        .map(ObjectAdapter.class::cast);
     }
 
     // -- DEPRECATIONS - SPECIALIZED
     
     @Deprecated
     static boolean _isDestroyed(ManagedObject adapter) {
-        return ManagedObject.promote(adapter).isDestroyed();
+        return ManagedObject.promote(adapter)
+                .map(ObjectAdapter::isDestroyed)
+                .orElseGet(()->!ManagedObject._oid(adapter).isPersistent());
     }
 
     @Deprecated
@@ -331,17 +332,32 @@ public interface ManagedObject {
     }
 
     @Deprecated
-    static boolean _whenFirstIsRepresentingPersistent_ensureSecondIsAsWell(
+    static void _whenFirstIsBookmarkable_ensureSecondIsNotTransient(
             ManagedObject first,
             ManagedObject second) {
         
-        //if(ownerAdapter.getSpecification().isEntity() && !referencedAdapter.getSpecification().isEntity()) {
-        
-        if(ManagedObject.promote(first).isRepresentingPersistent() &&
-                ManagedObject.promote(second).isTransient()) {
-            return false; 
+        if(ManagedObject.isBookmarkable(first) && second!=null) {
+            
+            val refSpec = second.getSpecification();
+            
+            if(refSpec.isParented() || !refSpec.isEntity()) {
+                return;
+            }
+            
+            val oid = ManagedObject._rootOidIfAny(second);
+            
+            if(oid.isTransient()) {
+
+                // TODO: I've never seen this exception, and in any case DataNucleus supports persistence-by-reachability; so probably not required
+                throw _Exceptions.illegalArgument(
+                        "can't set a reference to a transient object [%s] from a persistent one [%s]",
+                            second,
+                            first.titleString(null));
+            }
+            
         }
-        return true;
+        
+        
     }
     
     @Deprecated
@@ -368,8 +384,11 @@ public interface ManagedObject {
                 // a choices list could include a null (eg example in ToDoItems#choices1Categorized()); want to show as "visible"
                 return true;
             }
-            if(ManagedObject._isDestroyed(adapter)) {
-                return false;
+            val spec = adapter.getSpecification();
+            if(spec.isEntity()) {
+                if(ManagedObject._isDestroyed(adapter)) {
+                    return false;
+                }
             }
             if(interactionInitiatedBy == InteractionInitiatedBy.FRAMEWORK) { 
                 return true; 
@@ -380,16 +399,16 @@ public interface ManagedObject {
         private static boolean isVisibleForUser(ManagedObject adapter) {
             val visibilityContext = createVisibleInteractionContextForUser(adapter);
             val spec = adapter.getSpecification();
-            final InteractionResult visibleResult = InteractionUtils.isVisibleResult(spec, visibilityContext);
-            return visibleResult.isNotVetoing();
+            return InteractionUtils.isVisibleResult(spec, visibilityContext)
+                    .isNotVetoing();
         }
 
         private static VisibilityContext<?> createVisibleInteractionContextForUser(
-                ManagedObject objectAdapter) {
+                ManagedObject adapter) {
             
             return new ObjectVisibilityContext(
-                    objectAdapter,
-                    objectAdapter.getSpecification().getIdentifier(),
+                    adapter,
+                    adapter.getSpecification().getIdentifier(),
                     InteractionInitiatedBy.USER,
                     Where.OBJECT_FORMS);
         }
@@ -444,7 +463,7 @@ public interface ManagedObject {
         val objectId = rootOid.getIdentifier();
         
         val objectLoadRequest = ObjectLoader.ObjectLoadRequest.of(spec, objectId);
-        val managedObject = mmc.getObjectLoader().loadObject(objectLoadRequest);
+        val managedObject = mmc.getObjectManager().loadObject(objectLoadRequest);
         
         return managedObject;
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
index 972cfcb..51f00c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -253,7 +253,7 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
     }
 
     public ManagedObject getServiceAdapter() {
-        return getObjectAdapterProvider().adapterFor(servicePojo);
+        return getObjectManager().adapt(servicePojo);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
index 4de111e..4c3d56b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -508,7 +508,7 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
     }
 
     private ManagedObject adapterFor(final Object pojo) {
-        return pojo == null ? null : getObjectAdapterProvider().adapterFor(pojo);
+        return pojo == null ? null : getObjectManager().adapt(pojo);
     }
 
     private static ThreadLocal<List<ManagedObject>> commandTargetAdaptersHolder = new ThreadLocal<>();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 093a395..3bb7bf0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -28,7 +28,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.commons.ClassExtensions;
 import org.apache.isis.metamodel.commons.ListExtensions;
 import org.apache.isis.metamodel.commons.StringExtensions;
@@ -54,6 +53,7 @@ import org.apache.isis.metamodel.interactions.InteractionUtils;
 import org.apache.isis.metamodel.interactions.UsabilityContext;
 import org.apache.isis.metamodel.interactions.ValidityContext;
 import org.apache.isis.metamodel.interactions.VisibilityContext;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.metamodel.spec.DomainModelException;
 import org.apache.isis.metamodel.spec.ManagedObject;
@@ -244,7 +244,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
                     interactionInitiatedBy);
             checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
             for (final Object choice : choices) {
-                adapters.add(getObjectAdapterProvider().adapterFor(choice));
+                adapters.add(getObjectManager().adapt(choice));
             }
         }
         /* // now incorporated into above choices processing (BoundedFacet is no more)
@@ -296,7 +296,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
                     interactionInitiatedBy);
             checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
             for (final Object choice : choices) {
-                ManagedObject adapter = choice != null? getObjectAdapterProvider().adapterFor(choice) : null;
+                ManagedObject adapter = choice != null? getObjectManager().adapt(choice) : null;
                 adapters.add(adapter);
             }
         }
@@ -337,7 +337,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
                 // invoked it is unable to return a default.
                 return null;
             }
-            return getObjectAdapterProvider().adapterFor(dflt);
+            return getObjectManager().adapt(dflt);
         }
         return null;
     }
@@ -471,7 +471,7 @@ implements ObjectActionParameter, FacetHolder.Delegating {
         ManagedObject proposedValueAdapter = null;
         ObjectSpecification proposedValueSpec;
         if(proposedValue != null) {
-            proposedValueAdapter = getObjectAdapterProvider().adapterFor(proposedValue);
+            proposedValueAdapter = getObjectManager().adapt(proposedValue);
             if(proposedValueAdapter == null) {
                 return null;
             }
@@ -516,8 +516,8 @@ implements ObjectActionParameter, FacetHolder.Delegating {
         return parentAction.getSpecificationLoader();
     }
 
-    protected ObjectAdapterProvider getObjectAdapterProvider() {
-        return parentAction.getObjectAdapterProvider();
+    protected ObjectManager getObjectManager() {
+        return parentAction.getObjectManager();
     }
 
     protected PersistenceSessionServiceInternal getObjectPersistor() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
index 63d84ab..ed4a595 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
@@ -56,7 +56,7 @@ implements ObjectActionParameterContributee {
     }
 
     protected ManagedObject getServiceAdapter() {
-        return getObjectAdapterProvider().adapterFor(servicePojo);
+        return getObjectManager().adapt(servicePojo);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index c107f6e..3e23224 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -173,7 +173,7 @@ extends OneToManyAssociationDefault implements ContributeeMember {
     // -- FacetHolder
 
     private ManagedObject getServiceAdapter() {
-        return getObjectAdapterProvider().adapterForBean(serviceBean);
+        return getObjectManager().adapt(serviceBean);
     }
 
     // -- ContributeeMember2 impl (getServiceContributedBy)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 21117b6..4877563 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -20,7 +20,6 @@
 package org.apache.isis.metamodel.specloader.specimpl;
 
 import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.commons.exceptions.IsisException;
 import org.apache.isis.metamodel.commons.ToString;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
@@ -164,10 +163,20 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
         if (collection == null) {
             return null;
         }
-
-        val parentOid = ManagedObject._collectionOidIfAny(ownerAdapter); 
-        val newAdapter = getObjectAdapterProvider().adapterForCollection(collection, parentOid, this);
-        return newAdapter.injectServices(getServiceInjector());
+        
+        val objectManager = super.getObjectManager();
+        System.err.println("#### likely won't work");
+        return objectManager.adapt(collection);
+        
+//        val objectIdentifier = ManagedObject._collectionOidIfAny(ownerAdapter).getIdentifier();
+//
+//        
+//        //val spec = objectManager.loadSpec(collection); 
+//        val objectLoadRequest = ObjectLoadRequest.ofParentedCollection(ownerAdapter, this);
+//        val collectionAdapter = objectManager.loadObject(objectLoadRequest);
+//         
+//        val newAdapter = getObjectAdapterProvider().adapterForCollection(collection, parentOid, this);
+//        return newAdapter.injectServices(getServiceInjector());
     }
 
     @Override
@@ -186,19 +195,16 @@ extends ObjectAssociationAbstract implements OneToManyAssociation {
             final ManagedObject ownerAdapter,
             final ManagedObject referencedAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
+        
         if (referencedAdapter == null) {
             throw new IllegalArgumentException("Can't use null to add an item to a collection");
         }
         if (readWrite()) {
             
-            if (!ManagedObject._whenFirstIsRepresentingPersistent_ensureSecondIsAsWell(
+            ManagedObject._whenFirstIsBookmarkable_ensureSecondIsNotTransient(
                     ownerAdapter, 
-                    referencedAdapter)) {
-                
-                throw new IsisException("can't set a reference to a transient object from a persistent one: "
-                        + ownerAdapter.titleString(null)
-                        + " (persistent) -> " + referencedAdapter.titleString() + " (transient)");
-            }
+                    referencedAdapter);
+                    
             val facet = getFacet(CollectionAddToFacet.class);
             facet.add(ownerAdapter, referencedAdapter, interactionInitiatedBy);
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 73dba87..524f347 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -155,8 +154,8 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
         return InteractionUtils.isUsableResult(this, ic).createConsent();
     }
 
-    private ObjectAdapter getServiceAdapter() {
-        return getObjectAdapterProvider().adapterForBean(serviceBean);
+    private ManagedObject getServiceAdapter() {
+        return getObjectManager().adapt(serviceBean);
     }
 
     // -- Contributee impl - getServiceContributedBy()
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index 6b3a845..5a6d723 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -31,7 +31,6 @@ import org.apache.isis.metamodel.commons.ToString;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.consent.InteractionResult;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.actions.action.invocation.CommandUtil;
@@ -151,7 +150,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
             return null;
         }
 
-        return getObjectAdapterProvider().adapterFor(referencedPojo);
+        return getObjectManager().adapt(referencedPojo);
     }
 
     @Override
@@ -198,23 +197,14 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
             final ManagedObject newReferencedAdapter,
             final InteractionInitiatedBy interactionInitiatedBy) {
 
-        final PropertySetterFacet setterFacet = getFacet(PropertySetterFacet.class);
-        if (setterFacet == null) {
+        val propertySetterFacet = getFacet(PropertySetterFacet.class);
+        if (propertySetterFacet == null) {
             return;
         }
         
-        if (    
-                newReferencedAdapter != null && 
-                !newReferencedAdapter.getSpecification().isParented() &&
-                !ManagedObject._whenFirstIsRepresentingPersistent_ensureSecondIsAsWell(
-                        ownerAdapter, 
-                        newReferencedAdapter)) {
-
-            // TODO: I've never seen this exception, and in any case DataNucleus supports persistence-by-reachability; so probably not required
-            throw new IsisException("can't set a reference to a transient object from a persistent one: " + newReferencedAdapter.titleString(null) + " (transient)");
-        }
+        ManagedObject._whenFirstIsBookmarkable_ensureSecondIsNotTransient(ownerAdapter, newReferencedAdapter);
 
-        setterFacet.setProperty(this, ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
+        propertySetterFacet.setProperty(this, ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
     }
 
     private void clearValue(
@@ -280,7 +270,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
                 interactionInitiatedBy);
 
         List<ManagedObject> adapters = _NullSafe.stream(pojoOptions)
-                .map(  getObjectAdapterProvider()::adapterFor )
+                .map(  getObjectManager()::adapt )
                 .collect(Collectors.toList());
         return adapters.toArray(new ManagedObject[]{});
     }
@@ -303,7 +293,7 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
         if (pojoOptions != null) {
             final ManagedObject[] options = new ManagedObject[pojoOptions.length];
             for (int i = 0; i < options.length; i++) {
-                options[i] = getObjectAdapterProvider().adapterFor(pojoOptions[i]);
+                options[i] = getObjectManager().adapt(pojoOptions[i]);
             }
             return options;
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
index 7d1a4ac..d5307c6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/MetaModelContext_forTesting.java
@@ -36,8 +36,7 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.loader.ObjectLoader;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.metamodel.services.events.MetamodelEventService;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
@@ -61,22 +60,12 @@ import lombok.val;
 @Builder @Getter
 public final class MetaModelContext_forTesting implements MetaModelContext {
     
-//    public static MetaModelContext current() {
-//        return _Context.getElseFail(MetaModelContext.class);
-//    }
     
     public static MetaModelContext buildDefault() {
         return MetaModelContext_forTesting.builder()
         .build();
     }
     
-//    public static void preset(MetaModelContext primed) {
-//        _Context.clear();
-//        _Context.putSingleton(MetaModelContext.class, primed);
-//    }
-
-    private ObjectAdapterProvider objectAdapterProvider;
-
     private ServiceInjector serviceInjector;
     private ServiceRegistry serviceRegistry; 
 
@@ -90,6 +79,8 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
     
     @Builder.Default
     private IsisConfiguration configuration = newIsisConfiguration();
+    
+    private ObjectManager objectManager;
 
     private SpecificationLoader specificationLoader;
     
@@ -147,9 +138,6 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
         return serviceAdaptersById.get(serviceId);
     }
     
-    @Getter(onMethod = @__(@Override))
-    final ObjectLoader objectLoader = ObjectLoader.buildDefault(this);
-    
     // -- LOOKUP
 
     @Override
@@ -162,7 +150,7 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
         val fields = _Lists.of(
                 getConfigurationLegacy(),
                 getConfiguration(),
-                objectAdapterProvider,
+                getObjectManager(),
                 systemEnvironment,
                 serviceInjector,
                 serviceRegistry,
@@ -238,6 +226,14 @@ public final class MetaModelContext_forTesting implements MetaModelContext {
         }
         return specificationLoader;
     }
-
+    
+    @Override
+    public ObjectManager getObjectManager() {
+        if(objectManager==null) {
+            objectManager = ObjectManager.of((MetaModelContext)this);
+        }
+        return objectManager;
+    }
+    
 
 }
\ No newline at end of file
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
index 1ffa85e..b7a5d0f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/AbstractFacetFactoryTest.java
@@ -119,7 +119,7 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
                 .translationService(mockTranslationService)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+//                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .build();
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java
index 7f5c68b..b7be27c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/collections/JavaCollectionFacetTest.java
@@ -60,7 +60,7 @@ public class JavaCollectionFacetTest {
         facet = new JavaCollectionFacet(mockFacetHolder);
         
         metaModelContext = MetaModelContext_forTesting.builder()
-                .objectAdapterProvider(mockOAProvider)
+//                .objectAdapterProvider(mockOAProvider)
                 .build();
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
index f5df297..1b73991 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/ident/title/annotation/TitleFacetViaTitleAnnotationTest.java
@@ -32,13 +32,13 @@ import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.Annotations;
 import org.apache.isis.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
 import org.apache.isis.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation;
 import org.apache.isis.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
@@ -51,8 +51,8 @@ public class TitleFacetViaTitleAnnotationTest {
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
 
     @Mock private FacetHolder mockFacetHolder;
-    @Mock private ObjectAdapter mockObjectAdapter;
-    @Mock private ObjectAdapterProvider mockAdapterManager;
+    @Mock private ManagedObject mockManagedObject;
+    @Mock private ObjectManager mockObjectManager;
 
     protected MetaModelContext metaModelContext;
     
@@ -87,7 +87,8 @@ public class TitleFacetViaTitleAnnotationTest {
     @Before
     public void setUp() {
         metaModelContext = MetaModelContext_forTesting.builder()
-                .objectAdapterProvider(mockAdapterManager)
+//                .objectAdapterProvider(mockAdapterManager)
+                .objectManager(mockObjectManager)
                 .build();
     }
 
@@ -108,21 +109,21 @@ public class TitleFacetViaTitleAnnotationTest {
                 allowing(mockFacetHolder).getMetaModelContext();
                 will(returnValue(metaModelContext));
                 
-                allowing(mockObjectAdapter).getPojo();
+                allowing(mockManagedObject).getPojo();
                 will(returnValue(normalPojo));
 
-                allowing(mockAdapterManager).adapterFor("Normal");
+                allowing(mockObjectManager).adapt("Normal");
                 inSequence(sequence);
 
-                allowing(mockAdapterManager).adapterFor("Domain");
+                allowing(mockObjectManager).adapt("Domain");
                 inSequence(sequence);
 
-                allowing(mockAdapterManager).adapterFor("Object");
+                allowing(mockObjectManager).adapt("Object");
                 inSequence(sequence);
             }
         });
 
-        final String title = facet.title(mockObjectAdapter);
+        final String title = facet.title(mockManagedObject);
         assertThat(title, is("Normal Domain Object"));
     }
 
@@ -141,12 +142,12 @@ public class TitleFacetViaTitleAnnotationTest {
                 allowing(mockFacetHolder).getMetaModelContext();
                 will(returnValue(metaModelContext));
                 
-                allowing(mockObjectAdapter).getPojo();
+                allowing(mockManagedObject).getPojo();
                 will(returnValue(screwedPojo));
             }
         });
 
-        final String title = facet.title(mockObjectAdapter);
+        final String title = facet.title(mockManagedObject);
         assertThat(title, is("Failed Title"));
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
index 0d05b0f..7456d6a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
@@ -60,7 +60,7 @@ public class ParseableFacetUsingParserTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
-                .objectAdapterProvider(mockAdapterManager)
+//                .objectAdapterProvider(mockAdapterManager)
                 .build();
 
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
index a15d1a4..dff48ee 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -127,7 +127,7 @@ abstract class SpecificationLoaderTestAbstract {
                 .configuration(isisConfiguration = producers.newConfiguration())
                 .programmingModel(programmingModel)
                 .translationService(producers.mockTranslationService())
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal = producers.mockPersistenceSessionServiceInternal())
+//                .objectAdapterProvider(mockPersistenceSessionServiceInternal = producers.mockPersistenceSessionServiceInternal())
                 .authenticationSessionProvider(mockAuthenticationSessionProvider = producers.mockAuthenticationSessionProvider())
                 .singleton(mockMessageService = producers.mockMessageService())
                 .singleton(mockGridService = producers.mockGridService())
diff --git a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
index 00f16bc..58ee82e 100644
--- a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
@@ -95,7 +95,7 @@ public class ObjectMemberAbstractTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .build();
 
diff --git a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 895d9d6..3bb3c73 100644
--- a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -40,9 +40,6 @@ import org.apache.isis.applib.services.wrapper.InvalidException;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.oid.Oid.Factory;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facets.FacetedMethod;
 import org.apache.isis.metamodel.facets.all.named.NamedFacetInferred;
@@ -53,9 +50,9 @@ import org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFac
 import org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
 import org.apache.isis.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.command.CommandDtoServiceInternal;
-import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
-import org.apache.isis.metamodel.spec.ObjectSpecId;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
@@ -85,9 +82,9 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
 
-    @Mock private ObjectAdapterProvider mockAdapterManager;
+    //@Mock private ObjectAdapterProvider mockAdapterManager;
     @Mock private AuthenticationSessionProvider mockAuthenticationSessionProvider;
-    @Mock private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
+//    @Mock private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock private MessageService mockMessageService;
     @Mock private CommandContext mockCommandContext;
     @Mock private Command mockCommand;
@@ -98,13 +95,14 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock private ObjectSpecificationDefault mockEmployeeSpec;
     @Mock private FactoryService mockFactoryService;
     @Mock private TransactionService mockTransactionService;
+    @Mock protected ObjectManager mockObjectManager;
     
     private ObjectMember employeeNameMember;
 
     @Mock private ObjectSpecificationDefault mockStringSpec;
-    @Mock private ObjectAdapter mockEmployeeAdapter;
-    @Mock private ObjectAdapter mockAdapterForStringSmith;
-    @Mock private ObjectAdapter mockAdapterForStringJones;
+    @Mock private ManagedObject mockEmployeeAdapter;
+    @Mock private ManagedObject mockAdapterForStringSmith;
+    @Mock private ManagedObject mockAdapterForStringJones;
 
     private final SimpleSession session = new SimpleSession("tester", Collections.<String>emptyList());
 
@@ -125,7 +123,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .objectManager(mockObjectManager)
+//                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .singleton(wrapperFactory = createWrapperFactory())
                 .singleton(mockCommandContext)
@@ -145,48 +144,28 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
         context.checking(new Expectations() {
             {
-                //                allowing(mockIsisSessionFactory).getServicesInjector();
-                //                will(returnValue(mockServicesInjector));
-
-                //                allowing(mockServicesInjector).getPersistenceSessionServiceInternal();
-                //                will(returnValue(mockPersistenceSessionServiceInternal));
-
-                allowing(mockPersistenceSessionServiceInternal).adapterFor(employeeDO);
+                
+                allowing(mockObjectManager).adapt(employeeDO);
                 will(returnValue(mockEmployeeAdapter));
 
-                //                allowing(mockServicesInjector).getAuthenticationSessionProvider();
-                //                will(returnValue(mockAuthenticationSessionProvider));
-
-                allowing(mockEmployeeAdapter).getOid();
-                will(returnValue(Factory.persistentOf(ObjectSpecId.of("EMP"), "1")));
+//                allowing(mockEmployeeAdapter).getOid();
+//                will(returnValue(Factory.persistentOf(ObjectSpecId.of("EMP"), "1")));
 
+                allowing(mockEmployeeSpec).isManagedBean();
+                will(returnValue(true));
+                
                 allowing(mockEmployeeSpec).getCorrespondingClass();
                 will(returnValue(Employee.class));
 
                 allowing(mockStringSpec).getCorrespondingClass();
                 will(returnValue(String.class));
 
-                //                allowing(mockServicesInjector).lookupService(CommandContext.class);
-                //                will(returnValue(Optional.of(mockCommandContext)));
-                //
-                //                allowing(mockServicesInjector).lookupService(CommandDtoServiceInternal.class);
-                //                will(returnValue(Optional.of(mockCommandDtoServiceInternal)));
-
-                allowing(mockCommandDtoServiceInternal).asCommandDto(with(any(List.class)), with(any(OneToOneAssociation.class)), with(any(ObjectAdapter.class)));
+                allowing(mockCommandDtoServiceInternal).asCommandDto(with(any(List.class)), with(any(OneToOneAssociation.class)), with(any(ManagedObject.class)));
                 will(returnValue(new CommandDto()));
-
+                
                 allowing(mockCommandContext).getCommand();
                 will(returnValue(mockCommand));
 
-                //                allowing(mockServicesInjector).lookupServiceElseFail(CommandDtoServiceInternal.class);
-                //                will(returnValue(new CommandDtoServiceInternalDefault()));
-                //
-                //                allowing(mockServicesInjector).lookupServiceElseFail(AuthenticationSessionProvider.class);
-                //                will(returnValue(mockAuthenticationSessionProvider));
-                //
-                //                allowing(mockServicesInjector).getSpecificationLoader();
-                //                will(returnValue(mockSpecificationLoader));
-
                 allowing(mockSpecificationLoader).loadSpecification(String.class);
                 will(returnValue(mockStringSpec));
 
@@ -196,12 +175,12 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
                 will(returnValue(session));
 
-                //                allowing(mockAdapterManager).lookupAdapterFor(employeeDO);
-                //                will(returnValue(mockEmployeeAdapter));
-
-                allowing(mockAdapterManager).adapterFor(employeeDO);
-                will(returnValue(mockEmployeeAdapter));
+//                allowing(mockAdapterManager).adapterFor(employeeDO);
+//                will(returnValue(mockEmployeeAdapter));
 
+                allowing(mockEmployeeAdapter).titleString(null);
+                will(returnValue("titleOf[mockEmployeeAdapter]"));
+                
                 allowing(mockEmployeeAdapter).getSpecification();
                 will(returnValue(mockEmployeeSpec));
 
@@ -211,20 +190,19 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockEmployeeSpec).getMember(methodOf(Employee.class, "getEmployeeRepository"));
                 will(returnValue(null));
 
-                allowing(mockAdapterForStringJones).isDestroyed();
-                will(returnValue(false));
+//                allowing(mockAdapterForStringJones).isDestroyed();
+//                will(returnValue(false));
 
                 allowing(mockAdapterForStringJones).getSpecification();
                 will(returnValue(mockStringSpec));
 
-                allowing(mockPersistenceSessionServiceInternal).adapterFor("Jones");
+                allowing(mockObjectManager).adapt("Jones");
                 will(returnValue(mockAdapterForStringJones));
 
             }
         });
 
 
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
 
         final Method employeeGetNameMethod = methodOf(Employee.class, "getName");
@@ -259,8 +237,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
                 allowing(mockEmployeeAdapter).getPojo();
                 will(returnValue(employeeDO));
 
-                allowing(mockEmployeeAdapter).isRepresentingPersistent();
-                will(returnValue(true));
+//                allowing(mockEmployeeAdapter).isRepresentingPersistent();
+//                will(returnValue(true));
             }
         });
 
@@ -309,10 +287,10 @@ public class WrapperFactoryDefaultTest_wrappedObject {
 
             ignoring(mockStringSpec);
 
-            allowing(mockAdapterForStringSmith).isDestroyed();
-            will(returnValue(false));
+//            allowing(mockAdapterForStringSmith).isDestroyed();
+//            will(returnValue(false));
 
-            allowing(mockPersistenceSessionServiceInternal).adapterFor("Smith");
+            allowing(mockObjectManager).adapt("Smith");
             will(returnValue(mockAdapterForStringSmith));
         }});
 
@@ -444,8 +422,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private void allowingEmployeeHasSmithAdapter() {
         context.checking(new Expectations() {
             {
-                allowing(mockAdapterManager).adapterFor("Smith");
-                will(returnValue(mockAdapterForStringSmith));
+//                allowing(mockAdapterManager).adapterFor("Smith");
+//                will(returnValue(mockAdapterForStringSmith));
 
                 allowing(mockAdapterForStringSmith).getPojo();
                 will(returnValue("Smith"));
@@ -456,14 +434,14 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private void allowingJonesStringValueAdapter() {
         context.checking(new Expectations() {
             {
-                allowing(mockAdapterManager).adapterFor("Jones");
-                will(returnValue(mockAdapterForStringJones));
+//                allowing(mockAdapterManager).adapterFor("Jones");
+//                will(returnValue(mockAdapterForStringJones));
 
                 allowing(mockAdapterForStringJones).getPojo();
                 will(returnValue("Jones"));
 
-                allowing(mockAdapterForStringJones).isTransient();
-                will(returnValue(false));
+//                allowing(mockAdapterForStringJones).isTransient();
+//                will(returnValue(false));
             }
         });
     }
diff --git a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 0e575db..0848fa0 100644
--- a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -42,7 +42,6 @@ import org.apache.isis.applib.services.wrapper.events.PropertyVisibilityEvent;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.consent.Allow;
 import org.apache.isis.metamodel.consent.Consent;
@@ -54,7 +53,9 @@ import org.apache.isis.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.metamodel.facets.members.disabled.DisabledFacetAbstractAlwaysEverywhere;
 import org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
 import org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
@@ -77,7 +78,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Rule
     public final JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
-    @Mock private ObjectAdapterProvider mockAdapterManager;
+    //@Mock private ObjectAdapterProvider mockAdapterManager;
     @Mock private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock private PersistenceSessionServiceInternal mockPersistenceSessionServiceInternal;
     @Mock private SpecificationLoader mockSpecificationLoader;
@@ -86,14 +87,15 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Mock private TransactionService mockTransactionService;
     
     
-    @Mock private ObjectAdapter mockEmployeeAdapter;
+    @Mock private ManagedObject mockEmployeeAdapter;
     @Mock private ObjectSpecificationDefault mockOnType;
     @Mock private ObjectSpecificationDefault mockEmployeeSpec;
     @Mock private OneToOneAssociation mockPasswordMember;
     @Mock private Identifier mockPasswordIdentifier;
     @Mock private ServiceInjector mockServiceInjector;
     @Mock private ServiceRegistry mockServiceRegistry;
-    @Mock protected ObjectAdapter mockPasswordAdapter;
+    @Mock protected ManagedObject mockPasswordAdapter;
+    @Mock protected ObjectManager mockObjectManager;
 
     private Employee employeeDO;
 
@@ -117,7 +119,8 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .objectManager(mockObjectManager)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .singleton(wrapperFactory = createWrapperFactory())
                 .singleton(mockFactoryService)
@@ -134,21 +137,21 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
         setPasswordMethod = Employee.class.getMethod("setPassword", String.class);
 
         wrapperFactory.authenticationSessionProvider = mockAuthenticationSessionProvider;
-        wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
+        //wrapperFactory.persistenceSessionServiceInternal = mockPersistenceSessionServiceInternal;
 
         context.checking(new Expectations() {
             {
 
-                allowing(mockPersistenceSessionServiceInternal).adapterFor(employeeDO);
-                will(returnValue(mockEmployeeAdapter));
-                
-                allowing(mockPersistenceSessionServiceInternal).adapterFor(passwordValue);
-                will(returnValue(mockPasswordAdapter));
+//                allowing(mockPersistenceSessionServiceInternal).adapterFor(employeeDO);
+//                will(returnValue(mockEmployeeAdapter));
+//                
+//                allowing(mockPersistenceSessionServiceInternal).adapterFor(passwordValue);
+//                will(returnValue(mockPasswordAdapter));
 
-                allowing(mockAdapterManager).adapterFor(employeeDO);
+                allowing(mockObjectManager).adapt(employeeDO);
                 will(returnValue(mockEmployeeAdapter));
 
-                allowing(mockAdapterManager).adapterFor(passwordValue);
+                allowing(mockObjectManager).adapt(passwordValue);
                 will(returnValue(mockPasswordAdapter));
 
                 allowing(mockEmployeeAdapter).getSpecification();
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java
index 2470a0a..3f0ed89 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/WrapperFactoryDefault.java
@@ -59,7 +59,6 @@ import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.security.authentication.AuthenticationSessionProvider;
 import org.apache.isis.wrapper.dispatchers.InteractionEventDispatcher;
@@ -240,7 +239,7 @@ public class WrapperFactoryDefault implements WrapperFactory {
     // -- DEPENDENCES
 
     @Inject AuthenticationSessionProvider authenticationSessionProvider;
-    @Inject PersistenceSessionServiceInternal persistenceSessionServiceInternal;
+//    @Inject PersistenceSessionServiceInternal persistenceSessionServiceInternal;
     @Inject FactoryService factoryService;
     @Inject MetaModelContext metaModelContext;
     @Inject IsisSessionFactory isisSessionFactory;
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java
index 8a9bbbf..a819014 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DelegatingInvocationHandlerDefault.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
 import org.apache.isis.applib.services.wrapper.events.InteractionEvent;
 import org.apache.isis.commons.internal._Constants;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.runtime.system.persistence.PersistenceSession;
 
@@ -77,7 +77,7 @@ public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocati
         this.resolveObjectChangedEnabled = resolveObjectChangedEnabled;
     }
 
-    protected void resolveIfRequired(final ObjectAdapter targetAdapter) {
+    protected void resolveIfRequired(final ManagedObject targetAdapter) {
         resolveIfRequired(targetAdapter.getPojo());
     }
 
diff --git a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java
index 5710fbc..2ac89b5 100644
--- a/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtime-extensions/src/main/java/org/apache/isis/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -47,13 +47,12 @@ import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.metamodel.IsisJdoMetamodelPlugin;
 import org.apache.isis.metamodel.MetaModelContext;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.consent.InteractionResult;
 import org.apache.isis.metamodel.facets.ImperativeFacet;
 import org.apache.isis.metamodel.facets.ImperativeFacet.Intent;
 import org.apache.isis.metamodel.facets.object.mixin.MixinFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.Contributed;
@@ -67,7 +66,6 @@ import org.apache.isis.metamodel.specloader.specimpl.ContributeeMember;
 import org.apache.isis.metamodel.specloader.specimpl.ObjectActionContributee;
 import org.apache.isis.metamodel.specloader.specimpl.ObjectActionMixedIn;
 import org.apache.isis.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.security.authentication.AuthenticationSession;
 
 import lombok.val;
@@ -160,7 +158,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             return delegate(method, args);
         }
 
-        final ObjectAdapter targetAdapter = adapterFor(getDelegate());
+        final ManagedObject targetAdapter = adapterForPojo(getDelegate());
 
         if (isTitleMethod(method)) {
             return handleTitleMethod(targetAdapter);
@@ -239,7 +237,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             val objectAction = (ObjectAction) objectMember;
 
             ObjectAction actualObjectAction;
-            ObjectAdapter actualTargetAdapter;
+            ManagedObject actualTargetAdapter;
 
             val mixinFacet = targetAdapter.getSpecification().getFacet(MixinFacet.class);
             if(mixinFacet != null) {
@@ -266,7 +264,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     }
 
     private static ObjectAction determineMixinAction(
-            final ObjectAdapter domainObjectAdapter,
+            final ManagedObject domainObjectAdapter,
             final ObjectAction objectAction) {
         
         if(domainObjectAdapter == null) {
@@ -362,7 +360,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // title
     // /////////////////////////////////////////////////////////////////
 
-    private Object handleTitleMethod(final ObjectAdapter targetAdapter)
+    private Object handleTitleMethod(final ManagedObject targetAdapter)
             throws IllegalAccessException, InvocationTargetException {
 
         resolveIfRequired(targetAdapter);
@@ -380,7 +378,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleSaveMethod(
-            final ObjectAdapter targetAdapter, final ObjectSpecification targetNoSpec) {
+            final ManagedObject targetAdapter, final ObjectSpecification targetNoSpec) {
 
         runValidationTask(()->{
             val interactionResult =
@@ -388,13 +386,15 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             notifyListenersAndVetoIfRequired(interactionResult);
         });
         
-        return runExecutionTask(()->{
-            if (targetAdapter.isTransient()) {
-                val ps = IsisContext.getPersistenceSession().get();
-                ps.makePersistentInTransaction(targetAdapter);
-            }
-            return null;
-        });
+        
+        val spec = targetAdapter.getSpecification();
+        if(spec.isEntity()) {
+            return runExecutionTask(()->{
+                ManagedObject._makePersistentInTransaction(targetAdapter);
+                return null;
+            }); 
+        }
+        return null;
         
     }
 
@@ -403,7 +403,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleGetterMethodOnProperty(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToOneAssociation property) {
 
@@ -439,7 +439,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
 
 
     private Object handleSetterMethodOnProperty(
-            final ObjectAdapter targetAdapter, 
+            final ManagedObject targetAdapter, 
             final Object[] args,
             final OneToOneAssociation property) {
         
@@ -450,7 +450,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
             checkUsability(targetAdapter, property);
         });
         
-        val argumentAdapter = adapterFor(singleArg);
+        val argumentAdapter = adapterForPojo(singleArg);
         
         resolveIfRequired(targetAdapter);
 
@@ -474,7 +474,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleGetterMethodOnCollection(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToManyAssociation collection,
             final Method method,
@@ -540,7 +540,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleCollectionAddToMethod(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToManyAssociation otma) {
 
@@ -552,7 +552,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         });
         
         resolveIfRequired(targetAdapter);
-        val argumentAdapter = adapterFor(singleArg);
+        val argumentAdapter = adapterForPojo(singleArg);
         
         runValidationTask(()->{
             val interactionResult = otma.isValidToAdd(targetAdapter, argumentAdapter,
@@ -576,7 +576,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
 
 
     private Object handleCollectionRemoveFromMethod(
-            final ObjectAdapter targetAdapter,
+            final ManagedObject targetAdapter,
             final Object[] args,
             final OneToManyAssociation collection) {
         
@@ -588,7 +588,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         });
 
         resolveIfRequired(targetAdapter);
-        val argumentAdapter = adapterFor(singleArg);
+        val argumentAdapter = adapterForPojo(singleArg);
 
         runValidationTask(()->{
             val interactionResult = collection.isValidToRemove(targetAdapter, argumentAdapter,
@@ -609,18 +609,18 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
     // /////////////////////////////////////////////////////////////////
 
     private Object handleActionMethod(
-            final ObjectAdapter targetAdapter, 
+            final ManagedObject targetAdapter, 
             final Object[] args,
             final ObjectAction objectAction,
             final ContributeeMember contributeeMember) {
 
-        final ObjectAdapter contributeeAdapter;
+        final ManagedObject contributeeAdapter;
         final Object[] contributeeArgs;
         if(contributeeMember != null) {
             val contributeeParamPosition = contributeeMember.getContributeeParamPosition();
             val contributee = args[contributeeParamPosition];
             
-            contributeeAdapter = adapterFor(contributee);
+            contributeeAdapter = adapterForPojo(contributee);
             contributeeArgs = _Arrays.removeByIndex(args, contributeeParamPosition); 
         } else {
             contributeeAdapter = null;
@@ -651,7 +651,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         return runExecutionTask(()->{
 
             val interactionInitiatedBy = getInteractionInitiatedBy();
-            val mixedInAdapter = (ObjectAdapter)null; // if a mixin action, then it will automatically fill in.
+            val mixedInAdapter = (ManagedObject)null; // if a mixin action, then it will automatically fill in.
             val returnedAdapter = objectAction.execute(
                     targetAdapter, mixedInAdapter, argAdapters,
                     interactionInitiatedBy);
@@ -671,19 +671,19 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         notifyListenersAndVetoIfRequired(interactionResult);
     }
 
-    private ObjectAdapter[] asObjectAdaptersUnderlying(final Object[] args) {
+    private ManagedObject[] asObjectAdaptersUnderlying(final Object[] args) {
 
-        val argAdapters = new ObjectAdapter[args.length];
+        val argAdapters = new ManagedObject[args.length];
         int i = 0;
         for (final Object arg : args) {
-            argAdapters[i++] = adapterFor(underlying(arg));
+            argAdapters[i++] = adapterForPojo(underlying(arg));
         }
 
         return argAdapters;
     }
 
-    private ObjectAdapter adapterFor(final Object obj) {
-        return obj != null ? getObjectAdapterProvider().adapterFor(obj) : null;
+    private ManagedObject adapterForPojo(final Object pojo) {
+        return pojo != null ? getObjectManager().adapt(pojo) : null;
     }
 
     private Object underlying(final Object arg) {
@@ -887,8 +887,8 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         return mmContext.getAuthenticationSessionProvider().getAuthenticationSession();
     }
 
-    protected ObjectAdapterProvider getObjectAdapterProvider() {
-        return mmContext.getObjectAdapterProvider();
+    protected ObjectManager getObjectManager() {
+        return mmContext.getObjectManager();
     }
 
     
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java
index 8a1a238..e0514ce 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishedObjectsDefault.java
@@ -66,6 +66,7 @@ public class PublishedObjectsDefault implements PublishedObjects, RepresentsInte
             final int numberLoaded,
             final int numberObjectPropertiesModified,
             final Map<ObjectAdapter, PublishingChangeKind> changesByAdapter) {
+        
         this.transactionUuid = transactionUuid;
         this.sequence = sequence;
         this.userName = userName;
diff --git a/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java b/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
index bd1f8e0..b82601e 100644
--- a/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
+++ b/core/runtime-web/src/main/java/org/apache/isis/webapp/context/IsisWebAppCommonContext.java
@@ -66,7 +66,7 @@ public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
     private final ObjectAdapterMementoSupport mementoSupport = lookupServiceElseFail(ObjectAdapterMementoSupport.class);
     
     @Getter(lazy = true)
-    private final Function<Object, ObjectAdapter> pojoToAdapter = metaModelContext.getObjectAdapterProvider()::adapterFor;
+    private final Function<Object, ManagedObject> pojoToAdapter = metaModelContext.getObjectManager()::adapt;
     
     public IsisSession getCurrentSession() {
         return IsisSession.currentOrElseNull();
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
index afaa4c4..35d20f0 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
@@ -117,7 +117,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
         SCALAR {
 
             @Override
-            public ObjectAdapter asAdapter(
+            public ManagedObject asAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession,
                     SpecificationLoader specificationLoader) {
@@ -153,7 +153,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
         VECTOR {
 
             @Override
-            public ObjectAdapter asAdapter(
+            public ManagedObject asAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession,
                     SpecificationLoader specificationLoader) {
@@ -194,7 +194,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             throw new IllegalStateException("Memento is not for " + sort);
         }
 
-        public abstract ObjectAdapter asAdapter(
+        public abstract ManagedObject asAdapter(
                 ObjectAdapterMementoDefault memento,
                 PersistenceSession persistenceSession,
                 SpecificationLoader specificationLoader);
@@ -214,7 +214,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
          */
         ENCODEABLE {
             @Override
-            ObjectAdapter recreateAdapter(
+            ManagedObject recreateAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession,
                     SpecificationLoader specificationLoader) {
@@ -257,14 +257,14 @@ public class ObjectAdapterMementoDefault implements Serializable {
          */
         LOOKUP {
             @Override
-            ObjectAdapter recreateAdapter(
+            ManagedObject recreateAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession, 
                     SpecificationLoader specificationLoader) {
                 
                 RootOid oid = Oid.unmarshaller().unmarshal(memento.persistentOidStr, RootOid.class);
                 try {
-                    final ObjectAdapter adapter = persistenceSession.adapterFor(oid);
+                    final ManagedObject adapter = persistenceSession.adapterFor(oid);
                     return adapter;
 
                 } finally {
@@ -284,9 +284,9 @@ public class ObjectAdapterMementoDefault implements Serializable {
                     SpecificationLoader specificationLoader) {
                 
                 //XXX REVIEW: this may be redundant because recreateAdapter also guarantees the version will be reset.
-                final ObjectAdapter adapter = recreateAdapter(
+                final ManagedObject adapter = recreateAdapter(
                         memento, persistenceSession, specificationLoader);
-                Oid oid = adapter.getOid();
+                Oid oid = ManagedObject._oid(adapter);
                 memento.persistentOidStr = oid.enString();
             }
 
@@ -315,7 +315,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
              * {@link ConcurrencyChecking} is ignored for transients.
              */
             @Override
-            ObjectAdapter recreateAdapter(
+            ManagedObject recreateAdapter(
                     ObjectAdapterMementoDefault memento,
                     PersistenceSession persistenceSession, 
                     SpecificationLoader specificationLoader) {
@@ -346,7 +346,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             }
         };
 
-        public ObjectAdapter getAdapter(
+        public ManagedObject getAdapter(
                 ObjectAdapterMementoDefault memento,
                 PersistenceSession persistenceSession,
                 SpecificationLoader specificationLoader) {
@@ -354,7 +354,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             return recreateAdapter(memento, persistenceSession, specificationLoader);
         }
 
-        abstract ObjectAdapter recreateAdapter(
+        abstract ManagedObject recreateAdapter(
                 ObjectAdapterMementoDefault memento,
                 PersistenceSession persistenceSession, 
                 SpecificationLoader specificationLoader);
@@ -554,7 +554,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
      * best to call once and then hold onto the value thereafter. Alternatively,
      * can call {@link #setAdapter(ObjectAdapter)} to keep this memento in sync.
      */
-    public ObjectAdapter getObjectAdapter(
+    public ManagedObject getObjectAdapter(
             PersistenceSession persistenceSession,
             SpecificationLoader specificationLoader) {
         
@@ -639,7 +639,7 @@ public class ObjectAdapterMementoDefault implements Serializable {
             return pojo->ObjectAdapterMementoDefault.createOrNull( adapterProvider.adapterFor(pojo) );
         }
 
-        public static Function<ObjectAdapterMementoDefault, ObjectAdapter> fromMemento(
+        public static Function<ObjectAdapterMementoDefault, ManagedObject> fromMemento(
                 final PersistenceSession persistenceSession,
                 final SpecificationLoader specificationLoader) {
 
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
index 7a26a5c..598a973 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingDefault.java
@@ -120,7 +120,7 @@ implements ObjectAdapterMementoSupport {
         }
 
         @Override
-        public ObjectAdapter getObjectAdapter(SpecificationLoader specificationLoader) {
+        public ManagedObject getObjectAdapter(SpecificationLoader specificationLoader) {
             return delegate.getObjectAdapter(persistenceSession(), specificationLoader);
         }
         
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
index 2a7b636..e8bb90f 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
@@ -123,7 +123,7 @@ public class StandaloneData extends Data {
     //
     // ///////////////////////////////////////////////////////
 
-    public ObjectAdapter getAdapter(
+    public ManagedObject getAdapter(
             ObjectAdapterProvider objectAdapterProvider,
             SpecificationLoader specificationLoader) {
         
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java
index 3254857..5debb60 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContext.java
@@ -50,7 +50,6 @@ public interface RuntimeContext {
     ServiceRegistry getServiceRegistry();
     HomePageAction getHomePageAction();
 
-    ObjectAdapter adapterOfPojo(Object pojo);
     ObjectAdapter adapterOfMemento(ObjectSpecification spec, Oid oid, Data data);
 
     ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec);
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java
index b56ea91..6038807 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeContextBase.java
@@ -27,9 +27,9 @@ import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.config.IsisConfiguration;
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.services.homepage.HomePageAction;
 import org.apache.isis.metamodel.spec.ManagedObjectState;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -60,9 +60,9 @@ public abstract class RuntimeContextBase implements RuntimeContext {
     @Getter(onMethod = @__(@Override)) protected final ServiceRegistry serviceRegistry;
     @Getter(onMethod = @__(@Override)) protected final SpecificationLoader specificationLoader;
     
-    @Getter protected final ObjectAdapterProvider objectAdapterProvider;
     @Getter protected final TransactionService transactionService;
     @Getter protected final Supplier<HomePageAction> homePageActionResolver;
+    @Getter protected final ObjectManager objectManager;
 
     // -- SINGLE ARG CONSTRUCTOR
 
@@ -72,7 +72,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
         this.serviceInjector = mmc.getServiceInjector();
         this.serviceRegistry = mmc.getServiceRegistry();
         this.specificationLoader = mmc.getSpecificationLoader();
-        this.objectAdapterProvider = mmc.getObjectAdapterProvider();
+        this.objectManager = mmc.getObjectManager();
         this.transactionService = mmc.getTransactionService();
         this.homePageActionResolver = mmc::getHomePageAction;
     }
@@ -89,11 +89,6 @@ public abstract class RuntimeContextBase implements RuntimeContext {
 
     // -- OBJECT ADAPTER SUPPORT
 
-    @Override
-    public ObjectAdapter adapterOfPojo(Object pojo) {
-        return objectAdapterProvider.adapterFor(pojo);
-    }
-
     @Override //FIXME [2033] decouple from JDO
     public ObjectAdapter adapterOfMemento(ObjectSpecification spec, Oid oid, Data data) {
         return ps().adapterOfMemento(spec, oid, data);
@@ -125,7 +120,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
 
     @Override
     public ObjectAdapter newTransientInstance(ObjectSpecification domainTypeSpec) {
-        return objectAdapterProvider.newTransientInstance(domainTypeSpec);
+        return ps().newTransientInstance(domainTypeSpec);
     }
 
     @Override
@@ -147,6 +142,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
 
     private final _Lazy<PersistenceSession> persistenceSession = 
             _Lazy.of(IsisContext.getPersistenceSession()::get);
+ 
 
     private PersistenceSession ps() {
         return persistenceSession.get();
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
index 4542178..f78d516 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_MementoSupport.java
@@ -100,7 +100,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
         return adapter;
     }
 
-    private ObjectAdapter recreateReference(Data data) {
+    private ManagedObject recreateReference(Data data) {
         // handle values
         if (data instanceof StandaloneData) {
             val standaloneData = (StandaloneData) data;
@@ -144,7 +144,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
             final ObjectSpecification collectionSpec, 
             final CollectionData state) {
 
-        final Stream<ObjectAdapter> initData = state.streamElements()
+        final Stream<ManagedObject> initData = state.streamElements()
                 .map((final Data elementData) -> recreateReference(elementData));
 
         final CollectionFacet facet = collectionSpec.getFacet(CollectionFacet.class);
@@ -194,19 +194,23 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
 
     }
 
-    private void updateField(final ObjectAdapter objectAdapter, final ObjectData objectData, final ObjectAssociation objectAssoc) {
+    private void updateField(
+            final ManagedObject adapter, 
+            final ObjectData objectData, 
+            final ObjectAssociation objectAssoc) {
+        
         final Object fieldData = objectData.getEntry(objectAssoc.getId());
 
         if (objectAssoc.isOneToManyAssociation()) {
-            updateOneToManyAssociation(objectAdapter, (OneToManyAssociation) objectAssoc, (CollectionData) fieldData);
+            updateOneToManyAssociation(adapter, (OneToManyAssociation) objectAssoc, (CollectionData) fieldData);
 
         } else if (objectAssoc.getSpecification().containsFacet(EncodableFacet.class)) {
             final EncodableFacet facet = objectAssoc.getSpecification().getFacet(EncodableFacet.class);
-            final ObjectAdapter value = facet.fromEncodedString((String) fieldData);
-            ((OneToOneAssociation) objectAssoc).initAssociation(objectAdapter, value);
+            final ManagedObject value = facet.fromEncodedString((String) fieldData);
+            ((OneToOneAssociation) objectAssoc).initAssociation(adapter, value);
 
         } else if (objectAssoc.isOneToOneAssociation()) {
-            updateOneToOneAssociation(objectAdapter, (OneToOneAssociation) objectAssoc, (Data) fieldData);
+            updateOneToOneAssociation(adapter, (OneToOneAssociation) objectAssoc, (Data) fieldData);
         }
     }
 
@@ -217,9 +221,9 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
 
         val collection = otma.get(objectAdapter, InteractionInitiatedBy.FRAMEWORK);
         
-        final Set<ObjectAdapter> original = CollectionFacet.Utils.streamAdapters(ManagedObject.promote(collection))
+        final Set<ManagedObject> original = CollectionFacet.Utils.streamAdapters(collection)
                 .collect(Collectors.toCollection(LinkedHashSet::new));
-        final Set<ObjectAdapter> incoming = collectionData.streamElements()
+        final Set<ManagedObject> incoming = collectionData.streamElements()
                 .map(this::recreateReference)
                 .collect(Collectors.toCollection(LinkedHashSet::new));
 
@@ -227,7 +231,7 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
         .filter(original::contains)
         .forEach(elementAdapter->{
             if (log.isDebugEnabled()) {
-                log.debug("  association {} changed, added {}", otma, elementAdapter.getOid());
+                log.debug("  association {} changed, added {}", otma, ManagedObject._oid(elementAdapter));
             }
             otma.addElement(objectAdapter, elementAdapter, InteractionInitiatedBy.FRAMEWORK);
         });
@@ -236,21 +240,25 @@ class ObjectAdapterContext_MementoSupport implements MementoRecreateObjectSuppor
         .filter(not(incoming::contains))
         .forEach(elementAdapter->{
             if (log.isDebugEnabled()) {
-                log.debug("  association {} changed, removed {}", otma, elementAdapter.getOid());
+                log.debug("  association {} changed, removed {}", otma, ManagedObject._oid(elementAdapter));
             }
             otma.removeElement(objectAdapter, elementAdapter, InteractionInitiatedBy.FRAMEWORK);
         });
 
     }
 
-    private void updateOneToOneAssociation(final ObjectAdapter objectAdapter, final OneToOneAssociation otoa, final Data assocData) {
+    private void updateOneToOneAssociation(
+            final ManagedObject objectAdapter,
+            final OneToOneAssociation otoa, 
+            final Data assocData) {
+        
         if (assocData == null) {
             otoa.initAssociation(objectAdapter, null);
         } else {
-            final ObjectAdapter ref = recreateReference(assocData);
+            final ManagedObject ref = recreateReference(assocData);
             if (otoa.get(objectAdapter, InteractionInitiatedBy.FRAMEWORK) != ref) {
                 if (log.isDebugEnabled()) {
-                    log.debug("  association {} changed to {}", otoa, ref.getOid());
+                    log.debug("  association {} changed to {}", otoa, ManagedObject._oid(ref));
                 }
                 otoa.initAssociation(objectAdapter, ref);
             }
diff --git a/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java
index bd93c1c7..2c6353d 100644
--- a/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/runtime/system/ObjectActionLayoutXmlDefaultTest.java
@@ -63,7 +63,7 @@ public class ObjectActionLayoutXmlDefaultTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .build();
 
diff --git a/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
index 6973be8..401562f 100644
--- a/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/runtime/system/OneToManyAssociationDefaultTest.java
@@ -80,7 +80,7 @@ public class OneToManyAssociationDefaultTest {
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
-                .objectAdapterProvider(mockPersistenceSessionServiceInternal)
+                .singleton(mockPersistenceSessionServiceInternal)
                 .authenticationSessionProvider(mockAuthenticationSessionProvider)
                 .singleton(mockMessageService)
                 .build();
diff --git a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java
index a5b39b3..67d58e5 100644
--- a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java
+++ b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/whereami/WhereAmIModelDefault.java
@@ -84,7 +84,7 @@ class WhereAmIModelDefault implements WhereAmIModel {
     // -- HELPER
 
     private EntityModel toEntityModel(Object domainObject) {
-        val objectAdapter = commonContext.getObjectAdapterProvider().adapterFor(domainObject);
+        val objectAdapter = commonContext.getObjectManager().adapt(domainObject);
         return EntityModel.ofAdapter(commonContext, objectAdapter);
     }
 
diff --git a/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java b/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
index 173e796..459607c 100644
--- a/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
+++ b/core/viewer-wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ScalarModel_isScalarSubtypingAnyOf_Test.java
@@ -26,7 +26,7 @@ import org.junit.Test;
 
 import org.apache.isis.metamodel.MetaModelContext;
 import org.apache.isis.metamodel.MetaModelContext_forTesting;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.runtime.memento.ObjectAdapterMementoSupport;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -46,7 +46,7 @@ public class ScalarModel_isScalarSubtypingAnyOf_Test {
     @Mock ObjectSpecification mockObjectSpecification;
     @Mock EntityModel mockEntityModel;
     @Mock ObjectAdapterMementoSupport mockObjectAdapterMementoSupport;
-    @Mock ObjectAdapterProvider mockObjectAdapterProvider; 
+    @Mock ObjectManager mockObjectManager; 
     
     MetaModelContext metaModelContext;
 
@@ -58,7 +58,7 @@ public class ScalarModel_isScalarSubtypingAnyOf_Test {
     public void setup() {
         
         metaModelContext = MetaModelContext_forTesting.builder()
-                .objectAdapterProvider(mockObjectAdapterProvider)
+                .objectManager(mockObjectManager)
                 .singleton(mockObjectAdapterMementoSupport)
                 .build();
         
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 33c1eb9..276fb4b 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -38,10 +38,10 @@ import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
 
 import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
 import org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
+import org.apache.isis.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.runtime.system.session.IsisSession;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -65,7 +65,8 @@ import lombok.val;
  * </p>
  */
 public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> 
-extends ScalarPanelAbstract2 implements TextFieldValueModel.ScalarModelProvider {
+extends ScalarPanelAbstract2 
+implements TextFieldValueModel.ScalarModelProvider {
 
     private static final long serialVersionUID = 1L;
 
@@ -222,7 +223,7 @@ extends ScalarPanelAbstract2 implements TextFieldValueModel.ScalarModelProvider
             @Override
             public void validate(final IValidatable<T> validatable) {
                 final T proposedValue = validatable.getValue();
-                final ManagedObject proposedAdapter = adapterProvider().adapterFor(proposedValue);
+                final ManagedObject proposedAdapter = objectManager().adapt(proposedValue);
                 final String reasonIfAny = scalarModel.validate(proposedAdapter);
                 if (reasonIfAny != null) {
                     final ValidationError error = new ValidationError();
@@ -231,8 +232,9 @@ extends ScalarPanelAbstract2 implements TextFieldValueModel.ScalarModelProvider
                 }
             }
             
-            private ObjectAdapterProvider adapterProvider() {
-                return IsisSession.current().get().getObjectAdapterProvider();
+            private ObjectManager objectManager() {
+                return IsisSession.current().get().getMetaModelContext()
+                        .getObjectManager();
             }
             
         });
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
index 99dc6e6..fa6c8fa 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/auditing/AuditerServiceTest.java
@@ -84,7 +84,7 @@ class AuditerServiceTest {
     }
 
     @Test
-    void auditerServiceShouldBeAwareOfInventoryChanges() {
+    void auditerService_shouldBeAwareOfInventoryChanges() {
 
         // given
         val books = repository.allInstances(Book.class);
@@ -111,7 +111,7 @@ class AuditerServiceTest {
     }
 
     @Test
-    void auditerServiceShouldBeAwareOfInventoryChanges_whenUsingAsyncExecution() 
+    void auditerService_shouldBeAwareOfInventoryChanges_whenUsingAsyncExecution() 
             throws InterruptedException, ExecutionException, TimeoutException {
 
         // given
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
index 3671755..91052be 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/bootstrapping/SpringServiceProvisioningTest.java
@@ -76,7 +76,7 @@ class SpringServiceProvisioningTest {
                 .map(Class::getName)
                 .collect(Collectors.toCollection(TreeSet::new));
 
-        val singletonListing = _Resources.loadAsStringUtf8(this.getClass(), "builtin-singleton.list");
+        val singletonListing = _Resources.loadAsStringUtf8(this.getClass(), "builtin-domain-services.list");
         val expectedSingletons = _Strings.splitThenStreamTrimmed(singletonListing, "\n")
                 .filter(entry->!entry.startsWith("#"))
                 .collect(Collectors.toCollection(TreeSet::new));
diff --git a/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-domain-services.list b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-domain-services.list
new file mode 100644
index 0000000..55f5939
--- /dev/null
+++ b/examples/smoketests/src/test/resources/org/apache/isis/testdomain/bootstrapping/builtin-domain-services.list
@@ -0,0 +1,27 @@
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandDto
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandDto$CopyOverFromCommand
+org.apache.isis.applib.conmap.ContentMappingServiceForCommandsDto
+org.apache.isis.applib.mixins.dto.DtoMappingHelper
+org.apache.isis.applib.services.confview.ConfigurationMenu
+org.apache.isis.applib.services.layout.LayoutServiceMenu
+org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+org.apache.isis.applib.services.queryresultscache.QueryResultsCacheInternal
+org.apache.isis.applib.services.scratchpad.Scratchpad
+org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+org.apache.isis.applib.services.tablecol.TableColumnOrderService$Default
+org.apache.isis.applib.services.urlencoding.UrlEncodingServiceWithCompression
+org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsDefault
+org.apache.isis.jdo.metrics.MetricsServiceDefault
+org.apache.isis.metamodel.services.registry.ServiceRegistryDefault
+org.apache.isis.metamodel.services.user.UserServiceDefault$SudoServiceSpi
+org.apache.isis.runtime.services.command.CommandDtoServiceInternalDefault
+org.apache.isis.runtime.services.confmenu.ConfigurationViewServiceDefault
+org.apache.isis.runtime.services.email.EmailServiceDefault
+org.apache.isis.runtime.services.hsqldb.HsqlDbManagerMenu
+org.apache.isis.runtime.services.i18n.po.TranslationServicePoMenu
+org.apache.isis.runtime.services.ixn.InteractionDtoServiceInternalDefault
+org.apache.isis.runtime.services.publish.PublishingServiceInternalDefault
+org.apache.isis.runtime.services.sudo.SudoServiceDefault
+org.apache.isis.runtime.services.userprof.UserProfileServiceDefault
+org.apache.isis.runtime.services.userreg.EmailNotificationServiceDefault
+org.apache.isis.testdomain.jdo.InventoryResource
\ No newline at end of file