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/29 17:49:43 UTC

[isis] 02/03: ISIS-1976: generate element specification on the fly

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 021d8e80b49eaf0b9451caebf7ae5d71e32306af
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Sep 29 19:47:06 2018 +0200

    ISIS-1976: generate element specification on the fly
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../metamodel/adapter/ObjectAdapterProvider.java   |  5 ++--
 .../isis/core/metamodel/adapter/oid/Oid.java       |  2 +-
 ...ctionInvocationFacetForDomainEventAbstract.java | 24 +++++++++++++-----
 ...ObjectFacetDeclarativeInitializingAbstract.java | 14 +++++------
 .../core/metamodel/spec/ObjectSpecification.java   |  2 --
 .../specimpl/dflt/ObjectSpecificationDefault.java  | 29 +++++++++++++---------
 .../ObjectSpecificationOnStandaloneList.java       | 23 ++++++++++++-----
 .../testspec/ObjectSpecificationStub.java          |  6 -----
 .../ObjectAdapterContext_Factories.java            | 17 +++++++------
 ...ObjectAdapterContext_ObjectAdapterProvider.java | 20 +++++++--------
 .../actionresponse/ActionResultResponseType.java   | 22 ++++++++--------
 11 files changed, 93 insertions(+), 71 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
index 8ed331c..452fd18 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
@@ -27,6 +27,7 @@ import javax.annotation.Nullable;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 
@@ -72,7 +73,7 @@ public interface ObjectAdapterProvider {
      * @param viewModelPojo domain object
      * @return  
      */
-    ObjectAdapter disposableAdapterForViewModel(Object viewModelPojo);
+    ManagedObject disposableAdapterForViewModel(Object viewModelPojo);
     
     ObjectSpecification specificationForViewModel(Object viewModelPojo);
 
@@ -124,7 +125,7 @@ public interface ObjectAdapterProvider {
         }
 
         @Programmatic
-        default ObjectAdapter disposableAdapterForViewModel(final Object viewModelPojo) {
+        default ManagedObject disposableAdapterForViewModel(final Object viewModelPojo) {
             return getObjectAdapterProvider().disposableAdapterForViewModel(viewModelPojo);
         }
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
index 089416b..9ddeb17 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
@@ -146,7 +146,7 @@ public interface Oid extends Encodable {
 
         // -- PARENTED COLLECTIONS
         
-        public static ParentedOid collectionOfOneToMany(RootOid parentRootOid, OneToManyAssociation otma) {
+        public static ParentedOid parentedOfOneToMany(RootOid parentRootOid, OneToManyAssociation otma) {
             return Oid_Parented.ofName(parentRootOid, otma.getId());
         }
 
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 590f471..51b48ec 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
@@ -56,9 +56,11 @@ import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.applib.services.xactn.TransactionState;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.base._With;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.ArrayExtensions;
 import org.apache.isis.core.commons.lang.MethodInvocationPreprocessor;
@@ -415,18 +417,28 @@ implements ImperativeFacet {
     private ObjectAdapter cloneIfViewModelElse(final ObjectAdapter adapter, final ObjectAdapter dfltAdapter) {
 
         if (!adapter.getSpecification().isViewModelCloneable(adapter)) {
-            return  dfltAdapter;
+            return dfltAdapter;
         }
 
         final ViewModelFacet viewModelFacet = adapter.getSpecification().getFacet(ViewModelFacet.class);
         final Object clone = viewModelFacet.clone(adapter.getObject());
 
         final ObjectAdapter clonedAdapter = getObjectAdapterProvider().adapterFor(clone);
-
-        // copy over TypeOfFacet if required
-        final TypeOfFacet typeOfFacet = getFacetHolder().getFacet(TypeOfFacet.class);
-        clonedAdapter.getSpecification().setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
-
+        {
+            //FIXME[ISIS-1976] marked for removal
+            
+            // copy over TypeOfFacet if required
+            final TypeOfFacet typeOfFacet = getFacetHolder().getFacet(TypeOfFacet.class);
+            ObjectSpecification expected = _With.mapIfPresentElse(
+                    ElementSpecificationProvider.of(typeOfFacet),
+                    provider->provider.getElementType(),
+                    null
+                    );
+            ObjectSpecification actual = clonedAdapter.getSpecification().getElementSpecification();
+            Assert.assertEquals("expected same", expected, actual);
+        
+            //clonedAdapter.getSpecification().setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
+        }
         return clonedAdapter;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 5df8da4..5503ca0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -32,6 +32,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -94,8 +95,7 @@ extends RecreatableObjectFacetAbstract {
 
         final _Mementos.Memento memento = _Mementos.create(codec, serializer);
 
-        final ObjectAdapter ownerAdapter = adapterProvider.disposableAdapterForViewModel(viewModelPojo);
-        // holds a pseudo rootOid 
+        final ManagedObject ownerAdapter = adapterProvider.disposableAdapterForViewModel(viewModelPojo);
         final ObjectSpecification spec = ownerAdapter.getSpecification();
         
         final Stream<OneToOneAssociation> properties = spec.streamProperties(Contributed.EXCLUDED);
@@ -106,12 +106,10 @@ extends RecreatableObjectFacetAbstract {
         // ignore those explicitly annotated as @NotPersisted
         .filter(property->!property.isNotPersisted())
         .forEach(property->{
-            final ObjectAdapter propertyValueAdapter = property.get(ownerAdapter,
-                    InteractionInitiatedBy.FRAMEWORK);
-            if(propertyValueAdapter != null) {
-                final Object propertyValue = propertyValueAdapter.getObject();
-
-                memento.put(property.getId(), propertyValue);
+            final ManagedObject propertyValue = 
+                    property.get2(ownerAdapter, InteractionInitiatedBy.FRAMEWORK);
+            if(propertyValue != null) {
+                memento.put(property.getId(), propertyValue.getPojo());
             }
         });
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index d9d67fe..733a2dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -202,8 +202,6 @@ ObjectAssociationContainer, Hierarchical,  DefaultProvider {
      * @since 2.0.0-M2
      */
     ObjectSpecification getElementSpecification();
-    void setElementSpecificationProvider(ElementSpecificationProvider provider);
-
 
     // //////////////////////////////////////////////////////////////
     // TitleContext
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index ae6f899..c328763 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl.dflt;
 
+import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
+
 import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.List;
@@ -30,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.core.commons.lang.StringExtensions;
@@ -38,6 +41,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated;
 import org.apache.isis.core.metamodel.facets.all.i18n.PluralFacetTranslated;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
@@ -88,9 +92,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
     private final FacetedMethodsBuilder facetedMethodsBuilder;
     private final boolean isService;
 
-    private ObjectSpecification elementSpecification;
-
-
     public ObjectSpecificationDefault(
             final Class<?> correspondingClass,
             final FacetedMethodsBuilderContext facetedMethodsBuilderContext,
@@ -104,10 +105,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         this.facetedMethodsBuilder = new FacetedMethodsBuilder(this, facetedMethodsBuilderContext);
     }
 
-
-
-
-
     // -- introspectTypeHierarchyAndMembers
     @Override
     public void introspectTypeHierarchyAndMembers() {
@@ -410,14 +407,22 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
         return str.toString();
     }
 
+    // -- ELEMENT SPECIFICATION
+    
+    private final _Lazy<ObjectSpecification> elementSpecification = _Lazy.of(this::lookupElementSpecification); 
+    
     @Override
     public ObjectSpecification getElementSpecification() {
-        return elementSpecification;
+        return elementSpecification.get();
     }
-
-    @Override
-    public void setElementSpecificationProvider(ElementSpecificationProvider provider) {
-        this.elementSpecification = provider.getElementType();
+    
+    private ObjectSpecification lookupElementSpecification() {
+        return mapIfPresentElse(
+                getFacet(TypeOfFacet.class), 
+                typeOfFacet -> ElementSpecificationProvider.of(typeOfFacet).getElementType(), 
+                null);
     }
+    
+    // --
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
index b73f85f..eb4ef8b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnStandaloneList.java
@@ -19,9 +19,13 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl.standalonelist;
 
+import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
+
 import java.util.List;
 
+import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultToObject;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetOnStandaloneList;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
@@ -45,7 +49,6 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
     private static final String NAME = "Instances";
     private static final String DESCRIBED_AS = "Typed instances";
     private static final String ICON_NAME = "instances";
-    private ObjectSpecification elementSpecification;
 
     // -- constructor
 
@@ -153,15 +156,23 @@ public class ObjectSpecificationOnStandaloneList extends ObjectSpecificationAbst
         return null;
     }
 
+    // -- ELEMENT SPECIFICATION
+    
+    private final _Lazy<ObjectSpecification> elementSpecification = _Lazy.of(this::lookupElementSpecification); 
+    
     @Override
     public ObjectSpecification getElementSpecification() {
-        return elementSpecification;
+        return elementSpecification.get();
     }
-
-    @Override
-    public void setElementSpecificationProvider(ElementSpecificationProvider provider) {
-        this.elementSpecification = provider.getElementType();
+    
+    private ObjectSpecification lookupElementSpecification() {
+        return mapIfPresentElse(
+                getFacet(TypeOfFacet.class), 
+                typeOfFacet -> ElementSpecificationProvider.of(typeOfFacet).getElementType(), 
+                null);
     }
+    
+    // --
 
 
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 887469e..0000da4 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -40,7 +40,6 @@ import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.configinternal.ConfigurationServiceInternal;
 import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -384,9 +383,4 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
         return elementSpecification;
     }
 
-    @Override
-    public void setElementSpecificationProvider(ElementSpecificationProvider provider) {
-        this.elementSpecification = provider.getElementType();
-    }
-
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
index 56031ac..482a0a9 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_Factories.java
@@ -18,14 +18,14 @@
  */
 package org.apache.isis.core.runtime.system.persistence.adaptermanager;
 
+import static org.apache.isis.commons.internal.base._With.requires;
+
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.ParentedOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
@@ -54,7 +54,7 @@ class ObjectAdapterContext_Factories implements ObjectAdapterFactories {
 
     @Override
     public ObjectAdapter createRootAdapter(final Object pojo, RootOid rootOid) {
-        assert rootOid != null;
+        requires(rootOid, "rootOid");
         return createAdapter(pojo, rootOid);
     }
 
@@ -62,7 +62,7 @@ class ObjectAdapterContext_Factories implements ObjectAdapterFactories {
     public ObjectAdapter createCollectionAdapter(
             final Object pojo,
             ParentedOid collectionOid) {
-        assert collectionOid != null;
+        requires(collectionOid, "collectionOid");
         return createAdapter(pojo, collectionOid);
     }
 
@@ -75,16 +75,17 @@ class ObjectAdapterContext_Factories implements ObjectAdapterFactories {
         Assert.assertNotNull(pojo);
 
         // persistence of collection follows the parent
-        final ParentedOid collectionOid = Oid.Factory.collectionOfOneToMany(parentOid, otma);
+        final ParentedOid collectionOid = Oid.Factory.parentedOfOneToMany(parentOid, otma);
         final ObjectAdapter collectionAdapter = createCollectionAdapter(pojo, collectionOid);
 
+        //FIXME[ISIS-1976] marked for removal
         // we copy over the type onto the adapter itself
         // [not sure why this is really needed, surely we have enough info in
         // the adapter
         // to look this up on the fly?]
-        final TypeOfFacet facet = otma.getFacet(TypeOfFacet.class);
-        collectionAdapter.getSpecification()
-        .setElementSpecificationProvider(ElementSpecificationProvider.of(facet));
+//        final TypeOfFacet facet = otma.getFacet(TypeOfFacet.class);
+//        collectionAdapter.getSpecification()
+//        .setElementSpecificationProvider(ElementSpecificationProvider.of(facet));
 
         return collectionAdapter;
     }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
index d2dbcb6..1900064 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterProvider.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.runtime.system.persistence.adaptermanager;
 import static org.apache.isis.commons.internal.base._With.requires;
 
 import java.util.List;
-import java.util.UUID;
 import java.util.stream.Collectors;
 
 import org.slf4j.Logger;
@@ -31,10 +30,9 @@ import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -109,13 +107,15 @@ class ObjectAdapterContext_ObjectAdapterProvider implements ObjectAdapterProvide
     }
     
     @Override
-    public ObjectAdapter disposableAdapterForViewModel(Object viewModelPojo) {
-        final ObjectSpecification objectSpecification = 
-                specificationLoader.loadSpecification(viewModelPojo.getClass());
-        final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
-        final RootOid newRootOid = Oid.Factory.persistentOf(objectSpecId, UUID.randomUUID().toString());
-        final ObjectAdapter createdAdapter = objectAdapterContext.createRootOrAggregatedAdapter(newRootOid, viewModelPojo);
-        return createdAdapter;
+    public ManagedObject disposableAdapterForViewModel(final Object viewModelPojo) {
+        return ManagedObject.of(()->specificationLoader.loadSpecification(viewModelPojo.getClass()), viewModelPojo);
+//FIXME[ISIS-1976] -marked for removal        
+//        final ObjectSpecification objectSpecification = 
+//                specificationLoader.loadSpecification(viewModelPojo.getClass());
+//        final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
+//        final RootOid newRootOid = Oid.Factory.persistentOf(objectSpecId, UUID.randomUUID().toString());
+//        final ObjectAdapter createdAdapter = objectAdapterContext.createRootOrAggregatedAdapter(newRootOid, viewModelPojo);
+//        return createdAdapter;
     }
 
     @Override
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
index 1917699..dd7ebd5 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
@@ -27,14 +27,12 @@ import org.apache.wicket.request.IRequestHandler;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
@@ -63,13 +61,17 @@ public enum ActionResultResponseType {
         @Override
         public ActionResultResponse interpretResult(final ActionModel actionModel, final AjaxRequestTarget target, final ObjectAdapter resultAdapter) {
             if(resultAdapter.getElementSpecification() == null) {
-                final TypeOfFacet typeOfFacet = actionModel.getActionMemento()
-                        .getAction(IsisContext.getSessionFactory().getSpecificationLoader())
-                        .getFacet(TypeOfFacet.class);
-                if (typeOfFacet != null) {
-                    resultAdapter.getSpecification()
-                    .setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
-                }
+                
+                //FIXME[ISIS-1976] marked for removal
+                _Exceptions.throwUnexpectedCodeReach();
+                
+//                final TypeOfFacet typeOfFacet = actionModel.getActionMemento()
+//                        .getAction(IsisContext.getSessionFactory().getSpecificationLoader())
+//                        .getFacet(TypeOfFacet.class);
+//                if (typeOfFacet != null) {
+//                    resultAdapter.getSpecification()
+//                    .setElementSpecificationProvider(ElementSpecificationProvider.of(typeOfFacet));
+//                }
             }
 
             final EntityCollectionModel collectionModel = EntityCollectionModel.createStandalone(resultAdapter, actionModel.getIsisSessionFactory());