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

[isis] 05/06: ISIS-1976: remove ObjectAdapter.Functions, also rename some OA Utilities

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 08471fe94051d324697fc0cb1244a571f794300f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Sep 30 05:55:43 2018 +0200

    ISIS-1976: remove ObjectAdapter.Functions, also rename some OA Utilities
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../isis/core/metamodel/adapter/ObjectAdapter.java | 43 ++++++++--------------
 .../core/metamodel/facets/DomainEventHelper.java   | 10 ++---
 ...ctionInvocationFacetForDomainEventAbstract.java |  8 ++--
 .../CollectionAccessorFacetViaAccessor.java        |  2 +-
 ...ectionAddToFacetForDomainEventFromAbstract.java |  2 +-
 ...nRemoveFromFacetForDomainEventFromAbstract.java |  2 +-
 .../modify/CollectionAddToFacetViaAccessor.java    |  2 +-
 .../CollectionRemoveFromFacetViaAccessor.java      |  2 +-
 .../choices/ChoicesFacetFromBoundedAbstract.java   |  2 +-
 .../parser/ParseableFacetUsingParser.java          |  4 +-
 .../mandatory/MandatoryFacetAbstract.java          |  4 +-
 .../objectvalue/maxlen/MaxLengthFacetAbstract.java |  2 +-
 .../ActionParameterAutoCompleteFacetViaMethod.java |  2 +-
 .../method/ActionChoicesFacetViaMethod.java        |  2 +-
 .../ActionParameterChoicesFacetViaMethod.java      |  2 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |  3 +-
 ...tySetterOrClearFacetForDomainEventAbstract.java |  6 +--
 .../interactions/ActionArgValidityContext.java     |  4 +-
 .../interactions/ActionUsabilityContext.java       |  4 +-
 .../interactions/ActionValidityContext.java        |  4 +-
 .../interactions/ActionVisibilityContext.java      |  4 +-
 .../interactions/CollectionAccessContext.java      |  4 +-
 .../interactions/CollectionAddToContext.java       |  2 +-
 .../interactions/CollectionRemoveFromContext.java  |  4 +-
 .../interactions/CollectionVisibilityContext.java  |  4 +-
 .../metamodel/interactions/ObjectTitleContext.java |  4 +-
 .../interactions/ObjectValidityContext.java        |  4 +-
 .../interactions/ObjectVisibilityContext.java      |  4 +-
 .../metamodel/interactions/ParseValueContext.java  |  6 +--
 .../interactions/PropertyAccessContext.java        |  4 +-
 .../interactions/PropertyModifyContext.java        |  4 +-
 .../interactions/PropertyUsabilityContext.java     |  4 +-
 .../interactions/PropertyVisibilityContext.java    |  4 +-
 ...arameterChoicesFacetFromParentedCollection.java |  2 +-
 .../RepositoryServiceInternalDefault.java          |  2 +-
 .../metamodel/facets/ObjectAdapterUtilsTest.java   | 10 ++---
 ...sistenceQueryFindUsingApplibQueryProcessor.java |  2 +-
 ...sistenceQueryFindUsingApplibQueryProcessor.java |  2 +-
 .../command/CommandDtoServiceInternalDefault.java  |  2 +-
 .../handlers/DomainObjectInvocationHandler.java    |  6 +--
 .../summary/CollectionContentsAsSummary.java       |  2 +-
 41 files changed, 90 insertions(+), 100 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index b8581c2..74cc47a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -22,7 +22,6 @@ package org.apache.isis.core.metamodel.adapter;
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.List;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -107,47 +106,47 @@ public interface ObjectAdapter extends ManagedObject {
 
         private Util() {}
 
-        public static Object unwrap(final ManagedObject adapter) {
+        public static Object unwrapPojo(final ManagedObject adapter) {
             return adapter != null ? adapter.getPojo() : null;
         }
 
-        public static Object[] unwrap(final ManagedObject[] adapters) {
+        public static Object[] unwrapPojoArray(final ManagedObject[] adapters) {
             if (adapters == null) {
                 return null;
             }
             final Object[] unwrappedObjects = new Object[adapters.length];
             int i = 0;
             for (final ManagedObject adapter : adapters) {
-                unwrappedObjects[i++] = unwrap(adapter);
+                unwrappedObjects[i++] = unwrapPojo(adapter);
             }
             return unwrappedObjects;
         }
 
-        public static List<Object> unwrap(final List<? extends ManagedObject> adapters) {
+        public static List<Object> unwrapPojoList(final List<? extends ManagedObject> adapters) {
             List<Object> objects = _Lists.newArrayList();
             for (ManagedObject adapter : adapters) {
-                objects.add(unwrap(adapter));
+                objects.add(unwrapPojo(adapter));
             }
             return objects;
         }
 
         @SuppressWarnings("unchecked")
-        public static <T> List<T> unwrapT(final List<? extends ManagedObject> adapters) {
-            return (List<T>) unwrap(adapters);
+        public static <T> List<T> unwrapTypedPojoList(final List<? extends ManagedObject> adapters) {
+            return (List<T>) unwrapPojoList(adapters);
         }
 
-        public static String unwrapAsString(final ManagedObject adapter) {
-            final Object obj = unwrap(adapter);
+        public static String unwrapPojoStringElse(final ManagedObject adapter, String orElse) {
+            final Object obj = unwrapPojo(adapter);
             if (obj == null) {
                 return null;
             }
             if (!(obj instanceof String)) {
-                return null;
+                return orElse;
             }
             return (String) obj;
         }
 
-        public static String titleString(final ObjectAdapter adapter) {
+        public static String titleString(final ManagedObject adapter) {
             return adapter != null ? adapter.titleString(null) : "";
         }
 
@@ -281,23 +280,23 @@ public interface ObjectAdapter extends ManagedObject {
         }
 
         public static void invokeAll(final Collection<Method> methods, final ManagedObject adapter) {
-            MethodUtil.invoke(methods, Util.unwrap(adapter));
+            MethodUtil.invoke(methods, Util.unwrapPojo(adapter));
         }
 
         public static Object invoke(final Method method, final ManagedObject adapter) {
-            return MethodExtensions.invoke(method, Util.unwrap(adapter));
+            return MethodExtensions.invoke(method, Util.unwrapPojo(adapter));
         }
 
         public static Object invoke(final Method method, final ManagedObject adapter, final Object arg0) {
-            return MethodExtensions.invoke(method, Util.unwrap(adapter), new Object[] {arg0});
+            return MethodExtensions.invoke(method, Util.unwrapPojo(adapter), new Object[] {arg0});
         }
 
         public static Object invoke(final Method method, final ManagedObject adapter, final ManagedObject arg0Adapter) {
-            return invoke(method, adapter, Util.unwrap(arg0Adapter));
+            return invoke(method, adapter, Util.unwrapPojo(arg0Adapter));
         }
 
         public static Object invoke(final Method method, final ManagedObject adapter, final ManagedObject[] argumentAdapters) {
-            return MethodExtensions.invoke(method, Util.unwrap(adapter), Util.unwrap(argumentAdapters));
+            return MethodExtensions.invoke(method, Util.unwrapPojo(adapter), Util.unwrapPojoArray(argumentAdapters));
         }
 
         public static Object invokeC(final Method method, final ManagedObject adapter, 
@@ -362,15 +361,5 @@ public interface ObjectAdapter extends ManagedObject {
 
     }
 
-    public static class Functions {
-
-        private Functions(){}
-
-        public static Function<ObjectAdapter, Object> getObject() {
-            return Util::unwrap;
-        }
-
-    }
-
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
index cfc90d1..5d3dd9d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
@@ -72,8 +72,8 @@ public class DomainEventHelper {
                 event = existingEvent;
             } else {
                 // all other phases, create a new event
-                final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
-                final Object[] arguments = ObjectAdapter.Util.unwrap(argumentAdapters);
+                final Object source = ObjectAdapter.Util.unwrapPojo(targetAdapter);
+                final Object[] arguments = ObjectAdapter.Util.unwrapPojoArray(argumentAdapters);
                 final Identifier identifier = identified.getIdentifier();
                 event = newActionDomainEvent(eventType, identifier, source, arguments);
 
@@ -105,7 +105,7 @@ public class DomainEventHelper {
             event.setEventPhase(phase);
 
             if(phase.isExecuted()) {
-                event.setReturnValue(ObjectAdapter.Util.unwrap(resultAdapter));
+                event.setReturnValue(ObjectAdapter.Util.unwrapPojo(resultAdapter));
             }
 
             getEventBusService().post(event);
@@ -183,7 +183,7 @@ public class DomainEventHelper {
 
         try {
             final PropertyDomainEvent<?, ?> event;
-            final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
+            final Object source = ObjectAdapter.Util.unwrapPojo(targetAdapter);
             final Identifier identifier = identified.getIdentifier();
 
             if(existingEvent != null && phase.isExecuted()) {
@@ -277,7 +277,7 @@ public class DomainEventHelper {
                 event = existingEvent;
             } else {
                 // all other phases, create a new event
-                final Object source = ObjectAdapter.Util.unwrap(targetAdapter);
+                final Object source = ObjectAdapter.Util.unwrapPojo(targetAdapter);
                 final Identifier identifier = identified.getIdentifier();
                 event = newCollectionDomainEvent(eventType, phase, identifier, source, of, reference);
             }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index fdf6a62..a855d4e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -200,10 +200,10 @@ implements ImperativeFacet {
             // otherwise, go ahead and execute action in the 'foreground'
             final ObjectAdapter mixinElseRegularAdapter = mixedInAdapter != null ? mixedInAdapter : targetAdapter;
 
-            final Object mixinElseRegularPojo = ObjectAdapter.Util.unwrap(mixinElseRegularAdapter);
+            final Object mixinElseRegularPojo = ObjectAdapter.Util.unwrapPojo(mixinElseRegularAdapter);
 
             final List<ObjectAdapter> argumentAdapterList = Arrays.asList(argumentAdapters);
-            final List<Object> argumentPojos = ObjectAdapter.Util.unwrap(argumentAdapterList);
+            final List<Object> argumentPojos = ObjectAdapter.Util.unwrapPojoList(argumentAdapterList);
 
             final String targetMember = targetNameFor(owningAction, mixedInAdapter);
             final String targetClass = CommandUtil.targetClassNameFor(mixinElseRegularAdapter);
@@ -264,7 +264,7 @@ implements ImperativeFacet {
                                 command,
                                 resultAdapterPossiblyCloned);
 
-                        return ObjectAdapter.Util.unwrap(resultAdapterPossiblyCloned);
+                        return ObjectAdapter.Util.unwrapPojo(resultAdapterPossiblyCloned);
 
                     } catch (Exception e) {
 
@@ -495,7 +495,7 @@ implements ImperativeFacet {
             final Object visibleObjects =
                     CollectionUtils.copyOf(
                             stream(visibleAdapters)
-                            .map(ObjectAdapter.Functions.getObject())
+                            .map(ObjectAdapter.Util::unwrapPojo)
                             .collect(Collectors.toList()),
                             method.getReturnType());
             
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 8d08253..6b8dc5e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -90,7 +90,7 @@ implements ImperativeFacet {
                             interactionInitiatedBy);
             final Object visibleObjects =
                     CollectionUtils.copyOf(
-                            _Lists.map(visibleAdapters, ObjectAdapter.Functions.getObject()),
+                            _Lists.map(visibleAdapters, ObjectAdapter.Util::unwrapPojo),
                             method.getReturnType());
             if (visibleObjects != null) {
                 return visibleObjects;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
index 979375d..4a32bb6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionAddToFacetForDomainEventFromAbstract.java
@@ -70,7 +70,7 @@ implements CollectionAddToFacet {
             return;
         }
 
-        final Object referencedObject = ObjectAdapter.Util.unwrap(referencedObjectAdapter);
+        final Object referencedObject = ObjectAdapter.Util.unwrapPojo(referencedObjectAdapter);
 
         // get hold of underlying collection
         final Object collection = getterFacet.getProperty(targetAdapter, interactionInitiatedBy);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
index b2f0ca9..9d5a9eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/modify/CollectionRemoveFromFacetForDomainEventFromAbstract.java
@@ -72,7 +72,7 @@ implements CollectionRemoveFromFacet {
         }
 
 
-        final Object referencedObject = ObjectAdapter.Util.unwrap(referencedObjectAdapter);
+        final Object referencedObject = ObjectAdapter.Util.unwrapPojo(referencedObjectAdapter);
 
         // get hold of underlying collection
         // passing null through for authenticationSession/deploymentType means to avoid any visibility filtering.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
index 02fec5c..3da13ff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionAddToFacetViaAccessor.java
@@ -59,7 +59,7 @@ public class CollectionAddToFacetViaAccessor extends CollectionAddToFacetAbstrac
             final InteractionInitiatedBy interactionInitiatedBy) {
         @SuppressWarnings("unchecked")
         final Collection<? super Object> collection = (Collection<? super Object>) ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
-        final Object elementPojo = ObjectAdapter.Util.unwrap(elementAdapter);
+        final Object elementPojo = ObjectAdapter.Util.unwrapPojo(elementAdapter);
         collection.add(elementPojo);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
index bb6be42..fbadf83 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionRemoveFromFacetViaAccessor.java
@@ -61,7 +61,7 @@ public class CollectionRemoveFromFacetViaAccessor extends CollectionRemoveFromFa
             final InteractionInitiatedBy interactionInitiatedBy) {
         @SuppressWarnings("unchecked")
         final Collection<? super Object> collection = (Collection<? super Object>) ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
-        collection.remove(ObjectAdapter.Util.unwrap(elementAdapter));
+        collection.remove(ObjectAdapter.Util.unwrapPojo(elementAdapter));
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
index 9811847..75ac3dc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/ChoicesFacetFromBoundedAbstract.java
@@ -133,7 +133,7 @@ implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvis
                 ObjectAdapter.Util.visibleAdapters(allInstancesAdapter, interactionInitiatedBy);
 
         return _NullSafe.stream(adapters)
-                .map(ObjectAdapter.Functions.getObject()) // pojos
+                .map(ObjectAdapter.Util::unwrapPojo)
                 .collect(_Arrays.toArray(Object.class, _NullSafe.size(adapters)));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index ef7030c..3ff760b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -86,7 +86,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
             validate(parseValueContext);
         }
 
-        final Object context = ObjectAdapter.Util.unwrap(contextAdapter);
+        final Object context = ObjectAdapter.Util.unwrapPojo(contextAdapter);
 
         getDependencyInjector().injectServicesInto(parser);
 
@@ -127,7 +127,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
     @Override
     @SuppressWarnings({ "unchecked", "rawtypes" })
     public String parseableTitle(final ObjectAdapter contextAdapter) {
-        final Object pojo = ObjectAdapter.Util.unwrap(contextAdapter);
+        final Object pojo = ObjectAdapter.Util.unwrapPojo(contextAdapter);
 
         getDependencyInjector().injectServicesInto(parser);
         return ((Parser)parser).parseableTitleOf(pojo);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
index 4a19fb5..6d1dadc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
@@ -59,12 +59,12 @@ public abstract class MandatoryFacetAbstract extends MarkerFacetAbstract impleme
     @Override
     public final boolean isRequiredButNull(final ManagedObject adapter) {
         if(!isInvertedSemantics()) {
-            final Object object = ObjectAdapter.Util.unwrap(adapter);
+            final Object object = ObjectAdapter.Util.unwrapPojo(adapter);
             if (object == null) {
                 return true;
             }
             // special case string handling.
-            final String str = ObjectAdapter.Util.unwrapAsString(adapter);
+            final String str = ObjectAdapter.Util.unwrapPojoStringElse(adapter, null);
             return str != null && str.length() == 0;
         } else {
             return false;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
index 2708ed3..7c2ee35 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxLengthFacetAbstract.java
@@ -44,7 +44,7 @@ public abstract class MaxLengthFacetAbstract extends SingleIntValueFacetAbstract
      */
     @Override
     public boolean exceeds(final ManagedObject adapter) {
-        final String str = ObjectAdapter.Util.unwrapAsString(adapter);
+        final String str = ObjectAdapter.Util.unwrapPojoStringElse(adapter, null);
         if (str == null) {
             return false;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 8376362..a9accca 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -98,7 +98,7 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
                         collectionAdapter,
                         interactionInitiatedBy);
         final List<Object> visibleObjects =
-                _Lists.map(visibleAdapters, ObjectAdapter.Functions.getObject());
+                _Lists.map(visibleAdapters, ObjectAdapter.Util::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
         return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index b3ae7fc..cd16e85 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -117,7 +117,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
                         collectionAdapter,
                         interactionInitiatedBy);
         final List<Object> filteredObjects =
-                _Lists.map(visibleAdapters, ObjectAdapter.Functions.getObject());
+                _Lists.map(visibleAdapters, ObjectAdapter.Util::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
         return CollectionUtils.getCollectionAsObjectArray(filteredObjects, parameterSpec, getObjectAdapterProvider());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index b351cc9..4115c94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -90,7 +90,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
                         objectAdapter,
                         interactionInitiatedBy);
         final List<Object> visibleObjects =
-                _Lists.map(visibleAdapters, ObjectAdapter.Functions.getObject());
+                _Lists.map(visibleAdapters, ObjectAdapter.Util::unwrapPojo);
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
         return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index 88e65a8..c63bf47 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -111,7 +112,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
                         collectionAdapter,
                         interactionInitiatedBy);
         final List<Object> filteredObjects =
-                _Lists.map(visibleAdapters, ObjectAdapter.Functions.getObject());
+                _Lists.map(visibleAdapters, ObjectAdapter.Util::unwrapPojo);
 
         final ObjectSpecification propertySpec = getSpecification(propertyType);
         return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getObjectAdapterProvider());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
index 4ff4c54..27c7027 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/modify/PropertySetterOrClearFacetForDomainEventAbstract.java
@@ -200,8 +200,8 @@ extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>> {
 
         } else {
 
-            final Object target = ObjectAdapter.Util.unwrap(targetAdapter);
-            final Object argValue = ObjectAdapter.Util.unwrap(newValueAdapter);
+            final Object target = ObjectAdapter.Util.unwrapPojo(targetAdapter);
+            final Object argValue = ObjectAdapter.Util.unwrapPojo(newValueAdapter);
 
             final String targetMember = CommandUtil.targetMemberNameFor(owningProperty);
             final String targetClass = CommandUtil.targetClassNameFor(targetAdapter);
@@ -233,7 +233,7 @@ extends SingleValueFacetAbstract<Class<? extends PropertyDomainEvent<?,?>>> {
 
                         // ... post the executing event
                         final Object oldValue = getterFacet.getProperty(targetAdapter, interactionInitiatedBy);
-                        final Object newValue = ObjectAdapter.Util.unwrap(newValueAdapter);
+                        final Object newValue = ObjectAdapter.Util.unwrapPojo(newValueAdapter);
 
                         final PropertyDomainEvent<?, ?> event =
                                 domainEventHelper.postEventForProperty(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
index dff5dd7..198facd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionArgValidityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ActionArgumentEvent;
@@ -74,7 +74,7 @@ public class ActionArgValidityContext extends ValidityContext<ActionArgumentEven
 
     @Override
     public ActionArgumentEvent createInteractionEvent() {
-        return new ActionArgumentEvent(unwrap(getTarget()), getIdentifier(), unwrap(getArgs()), getPosition());
+        return new ActionArgumentEvent(unwrapPojo(getTarget()), getIdentifier(), ObjectAdapter.Util.unwrapPojoArray(getArgs()), getPosition());
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
index 81c2cf2..4e6fe13 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionUsabilityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
@@ -54,7 +54,7 @@ public class ActionUsabilityContext extends UsabilityContext<ActionUsabilityEven
 
     @Override
     public ActionUsabilityEvent createInteractionEvent() {
-        return new ActionUsabilityEvent(unwrap(getTarget()), getIdentifier());
+        return new ActionUsabilityEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
index 217ed73..9015b34 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionValidityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ActionInvocationEvent;
@@ -59,7 +59,7 @@ public class ActionValidityContext extends ValidityContext<ActionInvocationEvent
 
     @Override
     public ActionInvocationEvent createInteractionEvent() {
-        return new ActionInvocationEvent(unwrap(getTarget()), getIdentifier(), unwrap(getArgs()));
+        return new ActionInvocationEvent(unwrapPojo(getTarget()), getIdentifier(), ObjectAdapter.Util.unwrapPojoArray(getArgs()));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
index 59b4aa1..eab8c82 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ActionVisibilityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
@@ -54,7 +54,7 @@ public class ActionVisibilityContext extends VisibilityContext<ActionVisibilityE
 
     @Override
     public ActionVisibilityEvent createInteractionEvent() {
-        return new ActionVisibilityEvent(unwrap(getTarget()), getIdentifier());
+        return new ActionVisibilityEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java
index 1d64405..0d76135 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAccessContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.CollectionAccessEvent;
@@ -42,7 +42,7 @@ public class CollectionAccessContext extends AccessContext<CollectionAccessEvent
 
     @Override
     public CollectionAccessEvent createInteractionEvent() {
-        return new CollectionAccessEvent(unwrap(getTarget()), getIdentifier());
+        return new CollectionAccessEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java
index 841f6d7..09b486c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionAddToContext.java
@@ -50,7 +50,7 @@ public class CollectionAddToContext extends ValidityContext<CollectionAddToEvent
 
     @Override
     public CollectionAddToEvent createInteractionEvent() {
-        return new CollectionAddToEvent(ObjectAdapter.Util.unwrap(getTarget()), getIdentifier(), ObjectAdapter.Util.unwrap(getProposed()));
+        return new CollectionAddToEvent(ObjectAdapter.Util.unwrapPojo(getTarget()), getIdentifier(), ObjectAdapter.Util.unwrapPojo(getProposed()));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java
index 4c84979..645781b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionRemoveFromContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.CollectionRemoveFromEvent;
@@ -52,7 +52,7 @@ public class CollectionRemoveFromContext extends ValidityContext<CollectionRemov
 
     @Override
     public CollectionRemoveFromEvent createInteractionEvent() {
-        return new CollectionRemoveFromEvent(unwrap(getTarget()), getIdentifier(), unwrap(getProposed()));
+        return new CollectionRemoveFromEvent(unwrapPojo(getTarget()), getIdentifier(), unwrapPojo(getProposed()));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
index 33d2084..6bf1db9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/CollectionVisibilityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
@@ -44,7 +44,7 @@ public class CollectionVisibilityContext extends VisibilityContext<CollectionVis
 
     @Override
     public CollectionVisibilityEvent createInteractionEvent() {
-        return new CollectionVisibilityEvent(unwrap(getTarget()), getIdentifier());
+        return new CollectionVisibilityEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
index f917e54..bb7ccea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectTitleContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ObjectTitleEvent;
@@ -46,7 +46,7 @@ public class ObjectTitleContext extends AccessContext<ObjectTitleEvent> {
 
     @Override
     public ObjectTitleEvent createInteractionEvent() {
-        return new ObjectTitleEvent(unwrap(getTarget()), getIdentifier(), getTitle());
+        return new ObjectTitleEvent(unwrapPojo(getTarget()), getIdentifier(), getTitle());
     }
 
     private String getTitle() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
index 75aed21..17f6812 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectValidityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ObjectValidityEvent;
@@ -42,7 +42,7 @@ public class ObjectValidityContext extends ValidityContext<ObjectValidityEvent>
 
     @Override
     public ObjectValidityEvent createInteractionEvent() {
-        return new ObjectValidityEvent(unwrap(getTarget()), getIdentifier());
+        return new ObjectValidityEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
index e3a73da..e2dcfe8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ObjectVisibilityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
@@ -45,7 +45,7 @@ public class ObjectVisibilityContext extends VisibilityContext<ObjectVisibilityE
 
     @Override
     public ObjectVisibilityEvent createInteractionEvent() {
-        return new ObjectVisibilityEvent(unwrap(getTarget()), getIdentifier());
+        return new ObjectVisibilityEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
index 92ab38b..7767bc6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/ParseValueContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.ParseValueEvent;
@@ -51,8 +51,8 @@ public class ParseValueContext extends ValidityContext<ParseValueEvent> implemen
 
     @Override
     public ParseValueEvent createInteractionEvent() {
-        final String proposedPojo = (String) unwrap(getProposed());
-        return new ParseValueEvent(unwrap(getTarget()), getIdentifier(), proposedPojo);
+        final String proposedPojo = (String) unwrapPojo(getProposed());
+        return new ParseValueEvent(unwrapPojo(getTarget()), getIdentifier(), proposedPojo);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java
index a07e78f..cbc6b84 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyAccessContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.PropertyAccessEvent;
@@ -54,7 +54,7 @@ public class PropertyAccessContext extends AccessContext<PropertyAccessEvent> {
 
     @Override
     public PropertyAccessEvent createInteractionEvent() {
-        return new PropertyAccessEvent(unwrap(getTarget()), getIdentifier(), unwrap(getValue()));
+        return new PropertyAccessEvent(unwrapPojo(getTarget()), getIdentifier(), unwrapPojo(getValue()));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
index a49ed82..93facde 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyModifyContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.PropertyModifyEvent;
@@ -55,7 +55,7 @@ public class PropertyModifyContext extends ValidityContext<PropertyModifyEvent>
 
     @Override
     public PropertyModifyEvent createInteractionEvent() {
-        return new PropertyModifyEvent(unwrap(getTarget()), getIdentifier(), unwrap(getProposed()));
+        return new PropertyModifyEvent(unwrapPojo(getTarget()), getIdentifier(), unwrapPojo(getProposed()));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
index d719b8d..914ca9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyUsabilityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
@@ -44,7 +44,7 @@ public class PropertyUsabilityContext extends UsabilityContext<PropertyUsability
 
     @Override
     public PropertyUsabilityEvent createInteractionEvent() {
-        return new PropertyUsabilityEvent(unwrap(getTarget()), getIdentifier());
+        return new PropertyUsabilityEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
index 1536400..3ec4667 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/PropertyVisibilityContext.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.interactions;
 
-import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrap;
+import static org.apache.isis.core.metamodel.adapter.ObjectAdapter.Util.unwrapPojo;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
@@ -44,7 +44,7 @@ public class PropertyVisibilityContext extends VisibilityContext<PropertyVisibil
 
     @Override
     public PropertyVisibilityEvent createInteractionEvent() {
-        return new PropertyVisibilityEvent(unwrap(getTarget()), getIdentifier());
+        return new PropertyVisibilityEvent(unwrapPojo(getTarget()), getIdentifier());
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
index 58ec6b4..c220c50 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
@@ -56,7 +56,7 @@ public class ActionParameterChoicesFacetFromParentedCollection extends ActionPar
         final ObjectAdapter parentAdapter = determineParentAdapter(target);
         final ObjectAdapter objectAdapter = otma.get(parentAdapter, interactionInitiatedBy);
         final List<ObjectAdapter> objectAdapters = CollectionFacet.Utils.toAdapterList(objectAdapter);
-        return ObjectAdapter.Util.unwrap(objectAdapters.toArray(new ObjectAdapter[0]));
+        return ObjectAdapter.Util.unwrapPojoArray(objectAdapters.toArray(new ObjectAdapter[0]));
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
index aa513f1..e1eeebf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
@@ -168,7 +168,7 @@ public class RepositoryServiceInternalDefault implements RepositoryService {
 
     <T> List<T> submitQuery(final Query<T> query) {
         final List<ObjectAdapter> allMatching = persistenceSessionServiceInternal.allMatchingQuery(query);
-        return ObjectAdapter.Util.unwrapT(allMatching);
+        return ObjectAdapter.Util.unwrapTypedPojoList(allMatching);
     }
 
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ObjectAdapterUtilsTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ObjectAdapterUtilsTest.java
index 4f49ed3..d8d5914 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ObjectAdapterUtilsTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ObjectAdapterUtilsTest.java
@@ -43,33 +43,33 @@ public class ObjectAdapterUtilsTest {
 
     @Test
     public void testUnwrapObjectWhenNull() {
-        assertNull(ObjectAdapter.Util.unwrap((ObjectAdapter)null));
+        assertNull(ObjectAdapter.Util.unwrapPojo((ObjectAdapter)null));
     }
 
     @Test
     public void testUnwrapObjectWhenNotNull() {
         underlyingDomainObject = new Object(); 
         expectAdapterWillReturn(underlyingDomainObject);
-        assertEquals(underlyingDomainObject, ObjectAdapter.Util.unwrap(mockObjectAdapter));
+        assertEquals(underlyingDomainObject, ObjectAdapter.Util.unwrapPojo(mockObjectAdapter));
     }
 
     @Test
     public void testUnwrapStringWhenNull() {
-        assertNull(ObjectAdapter.Util.unwrapAsString(null));
+        assertNull(ObjectAdapter.Util.unwrapPojoStringElse(null, null));
     }
 
     @Test
     public void testUnwrapStringWhenNotNullButNotString() {
         underlyingDomainObject = new Object(); 
         expectAdapterWillReturn(underlyingDomainObject);
-        assertNull(ObjectAdapter.Util.unwrapAsString(mockObjectAdapter));
+        assertNull(ObjectAdapter.Util.unwrapPojoStringElse(mockObjectAdapter, null));
     }
 
     @Test
     public void testUnwrapStringWhenNotNullAndString() {
         underlyingDomainObject = "huzzah";
         expectAdapterWillReturn(underlyingDomainObject);
-        assertEquals("huzzah", ObjectAdapter.Util.unwrapAsString(mockObjectAdapter));
+        assertEquals("huzzah", ObjectAdapter.Util.unwrapPojoStringElse(mockObjectAdapter, null));
     }
 
     private void expectAdapterWillReturn(final Object domainObject) {
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
index ad5ec30..37bc877 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
@@ -138,7 +138,7 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
         final Map<String, Object> argumentsByParameterName = Maps.newHashMap();
         for (final String parameterName : argumentAdaptersByParameterName.keySet()) {
             final ObjectAdapter argumentAdapter = argumentAdaptersByParameterName.get(parameterName);
-            final Object argument = ObjectAdapter.Util.unwrap(argumentAdapter);
+            final Object argument = ObjectAdapter.Util.unwrapPojo(argumentAdapter);
             argumentsByParameterName.put(parameterName, argument);
         }
         return argumentsByParameterName;
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
index ee6e314..e8a1c66 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/persistence/queries/PersistenceQueryFindUsingApplibQueryProcessor.java
@@ -139,7 +139,7 @@ public class PersistenceQueryFindUsingApplibQueryProcessor extends PersistenceQu
         final Map<String, Object> argumentsByParameterName = Maps.newHashMap();
         for (final String parameterName : argumentAdaptersByParameterName.keySet()) {
             final ObjectAdapter argumentAdapter = argumentAdaptersByParameterName.get(parameterName);
-            final Object argument = ObjectAdapter.Util.unwrap(argumentAdapter);
+            final Object argument = ObjectAdapter.Util.unwrapPojo(argumentAdapter);
             argumentsByParameterName.put(parameterName, argument);
         }
         return argumentsByParameterName;
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
index c087eaa..3bf00e4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
@@ -169,7 +169,7 @@ public class CommandDtoServiceInternalDefault implements CommandDtoServiceIntern
         final Class<?> valueType = valueSpec.getCorrespondingClass();
 
         final ValueWithTypeDto newValue = CommonDtoUtils.newValueWithTypeDto(
-                valueType, ObjectAdapter.Util.unwrap(valueAdapter), bookmarkService);
+                valueType, ObjectAdapter.Util.unwrapPojo(valueAdapter), bookmarkService);
         propertyDto.setNewValue(newValue);
     }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtime/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
index 4d39e41..8666ded 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -425,7 +425,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         final InteractionInitiatedBy interactionInitiatedBy = getInteractionInitiatedBy();
         final ObjectAdapter currentReferencedAdapter = property.get(targetAdapter, interactionInitiatedBy);
 
-        final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
+        final Object currentReferencedObj = ObjectAdapter.Util.unwrapPojo(currentReferencedAdapter);
 
         final PropertyAccessEvent ev = new PropertyAccessEvent(getDelegate(), property.getIdentifier(), currentReferencedObj);
         notifyListeners(ev);
@@ -493,7 +493,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
         final InteractionInitiatedBy interactionInitiatedBy = getInteractionInitiatedBy();
         final ObjectAdapter currentReferencedAdapter = collection.get(targetAdapter, interactionInitiatedBy);
 
-        final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
+        final Object currentReferencedObj = ObjectAdapter.Util.unwrapPojo(currentReferencedAdapter);
 
         final CollectionAccessEvent ev = new CollectionAccessEvent(getDelegate(), collection.getIdentifier());
 
@@ -668,7 +668,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
                     targetAdapter, mixedInAdapter, argAdapters,
                     interactionInitiatedBy);
 
-            return ObjectAdapter.Util.unwrap(returnedAdapter);
+            return ObjectAdapter.Util.unwrapPojo(returnedAdapter);
         }
 
         return null;
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/summary/CollectionContentsAsSummary.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/summary/CollectionContentsAsSummary.java
index eba1b45..654136a 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/summary/CollectionContentsAsSummary.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/summary/CollectionContentsAsSummary.java
@@ -134,7 +134,7 @@ public class CollectionContentsAsSummary extends PanelAbstract<EntityCollectionM
                     values.add(null);
                     continue;
                 }
-                final Object valueObj = ObjectAdapter.Util.unwrap(valueAdapter);
+                final Object valueObj = ObjectAdapter.Util.unwrapPojo(valueAdapter);
                 if (valueObj == null) {
                     values.add(null);
                     continue;