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 2022/03/16 05:33:14 UTC
[isis] branch master updated: ISIS-2976: wkt hotfix: refresh viewmodel on every property neg. start
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 6ea0052 ISIS-2976: wkt hotfix: refresh viewmodel on every property neg. start
6ea0052 is described below
commit 6ea00528a671cbfc2e7738a1493815dff70b2d9f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 16 06:33:04 2022 +0100
ISIS-2976: wkt hotfix: refresh viewmodel on every property neg. start
---
.../isis/core/metamodel/spec/ManagedObjects.java | 35 ++++++++++++++++++++++
.../interaction/prop/PropertyInteractionWkt.java | 3 +-
.../viewer/wicket/ui/pages/entity/EntityPage.java | 28 ++++-------------
3 files changed, 42 insertions(+), 24 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index 6385fb5..2f872b8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -29,6 +29,7 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
+import java.util.function.Supplier;
import java.util.function.UnaryOperator;
import java.util.stream.Stream;
@@ -48,6 +49,8 @@ import org.apache.isis.commons.internal.base._Objects;
import org.apache.isis.commons.internal.collections._Arrays;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Sets;
+import org.apache.isis.commons.internal.debug._Debug;
+import org.apache.isis.commons.internal.debug.xray.XrayUi;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.commons.CanonicalInvoker;
import org.apache.isis.core.metamodel.commons.ClassExtensions;
@@ -57,6 +60,7 @@ import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
import org.apache.isis.core.metamodel.facets.object.entity.PersistenceStandard;
import org.apache.isis.core.metamodel.facets.object.title.TitleRenderRequest;
+import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.interactions.InteractionHead;
import org.apache.isis.core.metamodel.interactions.InteractionUtils;
import org.apache.isis.core.metamodel.interactions.ObjectVisibilityContext;
@@ -1112,4 +1116,35 @@ public final class ManagedObjects {
}
+ public static void refreshViewmodel(
+ final @Nullable ManagedObject viewmodel,
+ final @Nullable Supplier<Bookmark> bookmarkSupplier) {
+
+ if(isNullOrUnspecifiedOrEmpty(viewmodel)) {
+ return; // do nothing
+ }
+
+ val spec = viewmodel.getSpecification();
+ if(spec.isViewModel()) {
+ val viewModelFacet = spec.getFacet(ViewModelFacet.class);
+ if(viewModelFacet.containsEntities()) {
+
+ _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
+ _Debug.log("about to refresh viewmodel ..");
+ });
+
+ if(viewmodel.isBookmarkMemoized()) {
+ viewmodel.reloadViewmodelFromMemoizedBookmark();
+ } else {
+ val bookmark = bookmarkSupplier!=null
+ ? bookmarkSupplier.get()
+ : null;
+ if(bookmark!=null) {
+ viewmodel.reloadViewmodelFromBookmark(bookmark);
+ }
+ }
+ }
+ }
+ }
+
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java
index ce985ee..6c91584 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/interaction/prop/PropertyInteractionWkt.java
@@ -79,8 +79,7 @@ extends HasBookmarkedOwnerAbstract<PropertyInteraction> {
_Lazy.threadSafe(()->{
val propIa = propertyInteraction();
val prop = propIa.getManagedProperty().orElseThrow();
- ManagedObjects.EntityUtil.refetch(prop.getPropertyValue());
-
+ ManagedObjects.refreshViewmodel(prop.getOwner(), null);
return propIa.startPropertyNegotiation();
});
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index 60c99ad..626966a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -40,8 +40,8 @@ import org.apache.isis.commons.internal.debug._Debug;
import org.apache.isis.commons.internal.debug.xray.XrayUi;
import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -249,27 +249,11 @@ public class EntityPage extends PageAbstract {
}
val entityModel = (EntityModel)entityPage.getUiHintContainerIfAny();
- val spec = entityModel.getObject().getSpecification();
- if(spec.isViewModel()) {
-
- val viewModelFacet = spec.getFacet(ViewModelFacet.class);
- if(viewModelFacet.containsEntities()) {
-
- _Debug.onCondition(XrayUi.isXrayEnabled(), ()->{
- _Debug.log("about to refresh EntityPage ..");
- });
-
- val viewmodel = entityModel.getBookmarkedOwner();
- if(viewmodel.isBookmarkMemoized()) {
- viewmodel.reloadViewmodelFromMemoizedBookmark();
- } else {
- val bookmark = PageParameterUtils
- .toBookmark(entityPage.getPageParameters()).orElseThrow();
- viewmodel.reloadViewmodelFromBookmark(bookmark);
- }
-
- }
- }
+
+ ManagedObjects.refreshViewmodel(entityModel.getObject(),
+ ()->PageParameterUtils
+ .toBookmark(entityPage.getPageParameters())
+ .orElseThrow());
}
}