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

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


The following commit(s) were added to refs/heads/master by this push:
     new de298ca6af ISIS-3202: marks viewmodel refreshing stuff deprecated
de298ca6af is described below

commit de298ca6af0c3f6e9bd72a31e1e1d6f6173d6b50
Author: Andi Huber <[email protected]>
AuthorDate: Sat Sep 3 19:56:45 2022 +0200

    ISIS-3202: marks viewmodel refreshing stuff deprecated
---
 .../facets/object/viewmodel/ViewModelFacet.java    |  9 ---
 .../metamodel/object/RefreshableViewmodel.java     |  5 ++
 .../metamodel/object/_ManagedObjectViewmodel.java  | 73 +++++++++-------------
 3 files changed, 33 insertions(+), 54 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
index e68b5aa64c..987d872e99 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
@@ -54,13 +54,4 @@ public interface ViewModelFacet extends Facet {
      */
     Bookmark serializeToBookmark(ManagedObject managedObject);
 
-    /**
-     * Governs whether on start of any AJAX request, the viewmodel needs to 
reload,
-     * so any contained entities end up attached.
-     */
-    default boolean containsEntities() {
-        //XXX future work might improve that for performance optimizations, 
such that we need to actually check at facet creation
-        return true;
-    }
-
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
index 4c9525767b..acad8f5cab 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
@@ -24,6 +24,10 @@ import org.springframework.lang.Nullable;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
 
+/**
+ * @deprecated this refreshing stuff is a hack - remove eventually
+ */
+@Deprecated
 public interface RefreshableViewmodel {
 
     /**
@@ -31,6 +35,7 @@ public interface RefreshableViewmodel {
      * (Acts as a no-op otherwise.)
      * @apiNote usually should be sufficient to refresh once per interaction.
      */
+    @Deprecated
     void refreshViewmodel(@Nullable Supplier<Bookmark> bookmarkSupplier);
 
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
index 92639b37af..ca155ffe38 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
@@ -31,7 +31,6 @@ import org.apache.isis.commons.internal.assertions._Assert;
 import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.commons.internal.debug._XrayEvent;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import lombok.Getter;
@@ -111,29 +110,22 @@ implements RefreshableViewmodel {
 
     @Override
     public final void refreshViewmodel(final @Nullable Supplier<Bookmark> 
bookmarkSupplier) {
-        val spec = getSpecification();
-        if(spec.isViewModel()) {
-            val viewModelFacet = spec.getFacet(ViewModelFacet.class);
-            if(viewModelFacet.containsEntities()) {
-
-                val shouldRefresh = 
spec.getMetaModelContext().getInteractionProvider().getInteractionId()
-                .map(this::shouldRefresh)
-                .orElse(true); // if there is no current interaction, refresh 
regardless; unexpected state, might fail later
-
-                if(!shouldRefresh) {
-                    return;
-                }
-
-                if(isBookmarkMemoized()) {
-                    reloadViewmodelFromMemoizedBookmark();
-                } else {
-                    val bookmark = bookmarkSupplier!=null
-                            ? bookmarkSupplier.get()
-                            : null;
-                    if(bookmark!=null) {
-                        reloadViewmodelFromBookmark(bookmark);
-                    }
-                }
+        val shouldRefresh = 
getMetaModelContext().getInteractionProvider().getInteractionId()
+        .map(this::shouldRefresh)
+        .orElse(true); // if there is no current interaction, refresh 
regardless; unexpected state, might fail later
+
+        if(!shouldRefresh) {
+            return;
+        }
+
+        if(isBookmarkMemoized()) {
+            reloadViewmodelFromMemoizedBookmark();
+        } else {
+            val bookmark = bookmarkSupplier!=null
+                    ? bookmarkSupplier.get()
+                    : null;
+            if(bookmark!=null) {
+                reloadViewmodelFromBookmark(bookmark);
             }
         }
     }
@@ -152,35 +144,26 @@ implements RefreshableViewmodel {
      * Reload current viewmodel object from memoized bookmark, otherwise does 
nothing.
      */
     private void reloadViewmodelFromMemoizedBookmark() {
-        val spec = getSpecification();
-        if(isBookmarkMemoized()
-                && spec.isViewModel()) {
-
-            val bookmark = getBookmark().get();
-            val viewModelClass = spec.getCorrespondingClass();
+        val bookmark = getBookmark().get();
+        val viewModelClass = getCorrespondingClass();
 
-            val recreatedViewmodel =
-                    
getMetaModelContext().getFactoryService().viewModel(viewModelClass, bookmark);
+        val recreatedViewmodel =
+                getFactoryService().viewModel(viewModelClass, bookmark);
 
-            _XrayEvent.event("Viewmodel '%s' recreated from memoized 
bookmark.", viewModelClass.getName());
+        _XrayEvent.event("Viewmodel '%s' recreated from memoized bookmark.", 
viewModelClass.getName());
 
-            replacePojo(old->recreatedViewmodel);
-        }
+        replacePojo(old->recreatedViewmodel);
     }
 
     private void reloadViewmodelFromBookmark(final @NonNull Bookmark bookmark) 
{
-        val spec = getSpecification();
-        if(spec.isViewModel()) {
-            val viewModelClass = spec.getCorrespondingClass();
-
-            val recreatedViewmodel =
-                    
getMetaModelContext().getFactoryService().viewModel(viewModelClass, bookmark);
+        val viewModelClass = getCorrespondingClass();
+        val recreatedViewmodel =
+                getFactoryService().viewModel(viewModelClass, bookmark);
 
-            _XrayEvent.event("Viewmodel '%s' recreated from provided 
bookmark.", viewModelClass.getName());
+        _XrayEvent.event("Viewmodel '%s' recreated from provided bookmark.", 
viewModelClass.getName());
 
-            replacePojo(old->recreatedViewmodel);
-            replaceBookmark(old->bookmark);
-        }
+        replacePojo(old->recreatedViewmodel);
+        replaceBookmark(old->bookmark);
     }
 
     private void replacePojo(final UnaryOperator<Object> replacer) {

Reply via email to